C# WPF Window 간 데이터 넘기기

카테고리 없음 2012. 5. 29. 01:23 Posted by Relipmoc

구글링 해보니 Navigator니 뭐니 복잡하게 데이터를 넘기는 방법이 많던데, 

넘기는 데이터가 항상 똑같은 형식이면 그냥 이렇게 해주면 된다.


ParentWindow.xaml.cs


ChildWindow window1 = new ChildWindow("레립목은 일반인인 것 같아요.");

window1.Show();


ChildWindow.xaml.cs


namespace CuteLovelyNamu

{

/// <summary>

///  ChildWindow .xaml에 대한 상호 작용 논리

/// </summary>

public partial class ChildWindow : Window

{

public ChildWindow(string a)

{

InitializeComponent();

}

}


저 굵은 부분이 넘어오는 데이터다.


사실 다시 생각해보니 쉬운데.. 

댓글을 달아 주세요

http://msdn.microsoft.com/ko-kr/library/cdcw1c3b(v=vs.80).aspx#Y1100 에 따르면


sourceX

소스 사각형의 왼쪽 위 모퉁이에 있는 점의 X 좌표입니다.

sourceY

소스 사각형의 왼쪽 위 모퉁이에 있는 점의 Y 좌표입니다.

destinationX

대상 사각형의 왼쪽 위 모퉁이에 있는 점의 X 좌표입니다.

destinationY

대상 사각형의 왼쪽 위 모퉁이에 있는 점의 Y 좌표입니다.

blockRegionSize

전송할 영역의 크기입니다.

copyPixelOperation

CopyPixelOperation 값 중 하나입니다.


라고 한다. 


소스 사각형과 대상 사각형의 의미가 모호해서 나는 스크린에서 sourceX, Y부터 destinationX, Y까지를 Bitmap으로 복사하는 줄 알았다.


하지만 소스 사각형은 제대로 이해하고 있었지만, 여러가지 테스트(..)를 거쳐 알아보니 소스 사각형은 스크린 대상 사각형은 Bitmap[각주:1] 인데, 나는 둘 다 똑같은 걸로 이해하고 있었던 것이다.


그러니까 스크린의 sourceX, sourceY 좌표부터 blockRegionSize 만큼 이미지를 떠서 메모리에 저장한 다음, 메모리에 저장한 이미지를 Bitmap 이미지 안에서의 destinationX, destinationY 좌표에 붙여넣는 것.


이래도 MSDN인가요.. MSDN OUT!!

  1. 예를 들면 System.Drawing.Bitmap screenShotBMP = new System.Drawing.Bitmap(X, Y); <- 이거 System.Drawing.Graphics gfx = System.Drawing.Graphics.FromImage(screenShotBMP); [본문으로]

댓글을 달아 주세요

  1. nike free run 2013.07.29 02:55  댓글주소  수정/삭제  댓글쓰기

    태양이 바다에 미광을 비추면,나는 너를 생각한다.

  2. louis vuitton outlet 2013.08.03 17:16  댓글주소  수정/삭제  댓글쓰기

    좋으면 좋고 싫으면 싫은 거지, 뭐가 이렇게 어렵고 복잡하냐구

듀얼 모니터나 트리플 모니터 같은 멀티 모니터 환경에서 AMD® 아이피니티™ 같은 모든 화면을 덮는 윈도우를 만들려고 찾아봤더니 처음에는 Maximize를 해야 하는 줄 알았는데, 알고 보니 아니였다. stack overflow 글을 자세히 읽어보니까 최대화를 할 경우 한 모니터에서만 최대화가 되고 stretch 형식으로 resize 해야 한다... 라고 써있었는데 소스 복붙하기 바빠서 미처 저 문장을 보지 못하고 3일동안 헤맸다...


아무튼 결론은.. 사실 되게 쉽다


this.WindowStartupLocation = WindowStartupLocation.Manual;

this.Left = 0;

this.Top = 0;

this.Width = SystemParameters.VirtualScreenWidth;

this.Height = SystemParameters.VirtualScreenHeight;

this.WindowStyle = WindowStyle.None;

this.Topmost = true; 

this.Show();


이러면 된다

댓글을 달아 주세요

  1. SkillStorm 2012.05.30 21:47  댓글주소  수정/삭제  댓글쓰기

    내가 한것은 무엇이었는가아아아아아!

처음에는 API의 GetSystemMetrics 함수를 이용해 해상도를 구하였으나 더 찾아보니 더 쉬운 방법이 있었다(...)


double X = SystemParameters.VirtualScreenWidth;

double Y = SystemParameters.VirtualScreenHeight;


(...

댓글을 달아 주세요

C# WPF 핫키 설정

카테고리 없음 2012. 5. 14. 02:40 Posted by Relipmoc

아무리 검색해도 WPF 핫키 추가는 나오지 않아 나중에 혹시 찾을 일이 있으리라 믿고 올려둠. 


http://www.assembla.com/code/outcoldman_p/subversion/nodes/BlogProjects/WpfApplicationHotKey


이 repo의 WinApi 폴더를 그대로 갖다가 붙이고 MainWindow.xaml.cs 를 참고하면서 적용해도 되고,

프로젝트 참조를 해도 된다. 

TAG c#, HotKey, WPF, 핫키

댓글을 달아 주세요

Xen loop 수 늘리기

가상화/Xen 2012. 5. 9. 23:24 Posted by Relipmoc

Xen을 설치한 뒤에 기본적으로 7개의 loop device를 쓸 수 있는데 vm을 7개 이상 만들면 남은 loop device가 없기 때문에 만들어줘야 한다. 

원래는 Xen을 설치하고 나서 loop 갯수를 늘려주는 옵션을 modprobe.d 에 설정해야 하지만 깜빡하고 안 했을 경우 다음과 같은 커맨드라인으로 임시(..)대처를 할 수 있다.


for part in `seq 8 63`; do mknod -m660 /dev/loop$part b 7 $part; done;



댓글을 달아 주세요

CentOS 버전별 epel rpm url

리눅스 2012. 3. 1. 21:20 Posted by Relipmoc

5: rpm -Uvh  http://ftp.sayclub.com/fedora-epel/5/i386/epel-release-5-4.noarch.rpm 
6: rpm -Uvh  http://ftp.sayclub.com/fedora-epel/6/i386/epel-release-6-8.noarch.rpm


댓글을 달아 주세요

  1. 쑥쑦쑦쑦차 2012.04.07 20:55  댓글주소  수정/삭제  댓글쓰기

    헤헷. 감사합니다.

./load envdir unix.a byte.a
/usr/bin/ld: errno: TLS definition in /lib64/libc.so.6 section .tbss mismatches non-TLS reference in envdir.o
/lib64/libc.so.6: could not read symbols: Bad value
collect2: ld returned 1 exit status
make: *** [envdir] Error 1

http://blog.nirkabel.org/2009/01/18/errnoh-problem/ 포스트를 참고했다.

src/conf-cc 파일을 다음과 같이 수정.



gcc -O2 -Wimplicit -Wunused -Wcomment -Wchar-subscripts -Wuninitialized -Wshadow -Wcast-qual -Wcast-align -Wwrite-strings



gcc -O2 -Wimplicit -Wunused -Wcomment -Wchar-subscripts -Wuninitialized -Wshadow -Wcast-qual -Wcast-align -Wwrite-strings -include /usr/include/errno.h

이래도 안 될 경우, -include 뒤의 변수를 errno.h path로 바꿔주면 된다

댓글을 달아 주세요

  1. ghd 2013.07.27 12:16  댓글주소  수정/삭제  댓글쓰기

    슬퍼서 우는거 아니야..바람이 불어서 그래..눈이 셔서..

이 경우 configure 파일에서 64bit 시스템일 경우 /usr/lib64 를 먼저 검색해야 하는데 /usr/lib 만 검색해서 아키텍처가 안 맞게 되버린 것이다(추정)

이럴 땐 그냥

mv -f /usr/lib/mysql /usr/lib/mysql_bak
ln -s /usr/lib64/mysql /usr/lib/

하던가,

아니면 cofigure 파일의 6573줄의

for f in /usr/local/mysql/lib/mysql /usr/local/mysql/lib  /usr/local/lib/mysql /usr/lib/mysql

for f in /usr/local/mysql/lib/mysql /usr/local/mysql/lib  /usr/local/lib/mysql /usr/lib64/mysql /usr/lib/mysql

로 수정해주면 된다.

댓글을 달아 주세요

Bind 9.8.1-P1에서 pgsql 이나 mysql 드라이버와 함께 컴파일할 때
dlz_mysql_driver.o: In function `mysql_get_resultset':
/root/bind-9.8.1/bin/named/../../contrib/dlz/drivers/dlz_mysql_driver.c:279: 
undefined reference to `sdlzh_build_querystring'
/root/bind-9.8.1/bin/named/../../contrib/dlz/drivers/dlz_mysql_driver.c:282: 
undefined reference to `sdlzh_build_querystring'
/root/bind-9.8.1/bin/named/../../contrib/dlz/drivers/dlz_mysql_driver.c:285: 
undefined reference to `sdlzh_build_querystring'
/root/bind-9.8.1/bin/named/../../contrib/dlz/drivers/dlz_mysql_driver.c:288: 
undefined reference to `sdlzh_build_querystring'
/root/bind-9.8.1/bin/named/../../contrib/dlz/drivers/dlz_mysql_driver.c:291: 
undefined reference to `sdlzh_build_querystring'
dlz_mysql_driver.o:/root/bind-9.8.1/bin/named/../../contrib/dlz/drivers/dlz_mysql_driver.c:294: 
more undefined references to `sdlzh_build_querystring' follow
dlz_mysql_driver.o: In function `mysql_create':
/root/bind-9.8.1/bin/named/../../contrib/dlz/drivers/dlz_mysql_driver.c:823: 
undefined reference to `sdlzh_get_parameter_value'
/root/bind-9.8.1/bin/named/../../contrib/dlz/drivers/dlz_mysql_driver.c:833: 
undefined reference to `sdlzh_get_parameter_value'
/root/bind-9.8.1/bin/named/../../contrib/dlz/drivers/dlz_mysql_driver.c:857: 
undefined reference to `sdlzh_build_sqldbinstance'
/root/bind-9.8.1/bin/named/../../contrib/dlz/drivers/dlz_mysql_driver.c:902: 
undefined reference to `sdlzh_get_parameter_value'
/root/bind-9.8.1/bin/named/../../contrib/dlz/drivers/dlz_mysql_driver.c:909: 
undefined reference to `sdlzh_get_parameter_value'
/root/bind-9.8.1/bin/named/../../contrib/dlz/drivers/dlz_mysql_driver.c:916: 
undefined reference to `sdlzh_get_parameter_value'
/root/bind-9.8.1/bin/named/../../contrib/dlz/drivers/dlz_mysql_driver.c:924: 
undefined reference to `sdlzh_get_parameter_value'
/root/bind-9.8.1/bin/named/../../contrib/dlz/drivers/dlz_mysql_driver.c:925: 
undefined reference to `sdlzh_get_parameter_value'
dlz_mysql_driver.o:/root/bind-9.8.1/bin/named/../../contrib/dlz/drivers/dlz_mysql_driver.c:926: 
more undefined references to `sdlzh_get_parameter_value' follow
dlz_mysql_driver.o: In function `mysql_create':
/root/bind-9.8.1/bin/named/../../contrib/dlz/drivers/dlz_mysql_driver.c:963: 
undefined reference to `sdlzh_destroy_sqldbinstance'
/root/bind-9.8.1/bin/named/../../contrib/dlz/drivers/dlz_mysql_driver.c:861: 
undefined reference to `sdlzh_build_sqldbinstance'
/root/bind-9.8.1/bin/named/../../contrib/dlz/drivers/dlz_mysql_driver.c:865: 
undefined reference to `sdlzh_build_sqldbinstance'
/root/bind-9.8.1/bin/named/../../contrib/dlz/drivers/dlz_mysql_driver.c:870: 
undefined reference to `sdlzh_build_sqldbinstance'
dlz_mysql_driver.o: In function `mysql_destroy':
/root/bind-9.8.1/bin/named/../../contrib/dlz/drivers/dlz_mysql_driver.c:1003: 
undefined reference to `sdlzh_destroy_sqldbinstance'
collect2: ld returned 1 exit status
make[2]: *** [named] Error 1
make[2]: Leaving directory `/root/bind-9.8.1/bin/named'
make[1]: *** [subdirs] Error 1
make[1]: Leaving directory `/root/bind-9.8.1/bin'
make: *** [subdirs] Error 1

이런 에러가 뜨면

diff -u -r1.3 sdlz_helper.c
--- contrib/dlz/drivers/sdlz_helper.c	14 May 2010 06:29:37 -0000	1.3
+++ contrib/dlz/drivers/sdlz_helper.c	5 Sep 2011 17:31:30 -0000
@@ -50,8 +50,6 @@
  * WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
  */
 
-#ifdef DLZ
-
 #include <config.h>
 
 #include <dns/log.h>
@@ -527,5 +525,3 @@
 
 	return isc_mem_strdup(mctx, value);
 }
-
-#endif

이 패치를 적용해 주면 된다

9.8.2 때 패치가 적용되서 나온다는 듯..

댓글을 달아 주세요