GSI

Openfiledialog를 사용해서 파일을 가져와서 Stream의 정보를 Binary로 읽는 코드 입니다.

private void btnAzeSelect_Click(object sender, EventArgs e)
{
    Stream myStream = null;
    OpenFileDialog openFileDialog1 = new OpenFileDialog();

    openFileDialog1.InitialDirectory = "c:\\";
    openFileDialog1.Filter = "txt files (*.txt)|*.txt|All files (*.*)|*.*";
    openFileDialog1.FilterIndex = 2;
    openFileDialog1.RestoreDirectory = true;

    if (openFileDialog1.ShowDialog() == DialogResult.OK)
    {
        // 컨트롤에 이름 설정하기
        tbAzeName.Text = openFileDialog1.FileName;

        try
        {
            if ((myStream = openFileDialog1.OpenFile()) != null)
            {
                using (myStream)
                {
                    // 바이너리로 읽기 위해서 BinaryReader를 생성하고 myStream의
                    // 스트림 값을 넘겨 받는다.
                    BinaryReader r = new BinaryReader(myStream);
                    for (int i = 0; i < 5; i++)
                    {
                        Console.WriteLine(r.ReadInt32());
                    }
                }
            }
        }
        catch (Exception ex)
        {
            MessageBox.Show("Error: Could not read file from disk. Original error: " + ex.Message);
        }
    }
}

Posted by gsi
:

사용자 삽입 이미지

이번에 하게된 테스트 프로젝트에서 사용하게 되는 모듈 중에 CScrollView를 사용한
화면 구현 부분을 작성해 봤습니다.

기능 :
- CScrollVew
- ZoomIn, ZoomOut
- MouseLButton 연동한 해당 지점 찍기

스크롤을 하거나, 줌인이 되면서 스크롤 되거나 하는 부분에서
마우스의 위치 처리 부분이 참 궁금했습니다.
이것으로 테스트는 마치고 작업에 들어가야 하겠네요.

구체적인 코드 설명은 오늘은 영.. @.@..
요청이 있을시에는 설명 해 드리겠습니다. ^^..

<참고> 코드 구루 인가 그쪽에서 가져온 ZoomView를 사용해서 확장한 겁니다.

소스 파일 :

Posted by gsi
:

출처 : http://xamlxaml.com/2006/08/04/unique-interfaces-in-wpfxaml/

PostItBoard Demo


이런 느낌의 사진 게시판은 느낌이 좋을거 같다.
카테고리별로 나누고 새로운 사진들은 바람에 흔들거린다던지 하는 효과도 좋은거 같다.

누르면 크게 보여 주고 다시 사라지고 하는 효과도 좋을거 같고
포스트잇을 연상케 하는 이 디자인은 나름 멋진듯 하네.

Posted by gsi
:

Win Form 만으로는 WPF 만큼의 효과를 구사하지 못한다.
그래서 생각한게 Custom Control 형태를 취하게 하면서 WPF 컨트를을 Win Form에
연동이 가능하다는 것을 알게 되었다.

즉, Visual Studio 2008에 있는 ElementHost를 선택해서 Form에 추가 합니다.

사용자 삽입 이미지





이후에 화면은 아래와 같으며, References에 windowBase, WindowsFormsIntegration이 추가 됩니다.
사용자 삽입 이미지

하지만 WPF 관련 xaml 파일이 없기 때문에 위와 같이 아무것도 적용할 수 없습니다.

이후에 xaml 파일을 추가 해야 합니다.
xaml 파일만 추가할 수도 있지만, WPF 어플리케이션을 추가한 후에 Blend로 작업하고,
프로젝트를 추가해서 하는게 더 좋은거 같습니다.

프로젝트 생성 후에 Window1.xaml 파일을 그대로 사용하지는 못하는듯 합니다.
UserControl을 상속 받은 xaml 파일을 사용해야 하기 때문에 파일을 하나 추가합니다.

이제 아래와 같은 추가할 수 있는 화면이 나옵니다.
사용자 삽입 이미지


이제 추가 하고 나면 아래의 화면 처름 배치를 할 수 있습니다.
사용자 삽입 이미지











이후의 컨트롤 접근은 다를거 없습니다.
해당 컨트롤.컨트롤이름. 이렇게 진행 됩니다.

궁금한 내용 있으시면.. 코멘트 부탁해요 ^^

Posted by gsi
:

사용자 삽입 이미지

DirectX 코드를 사용해서 텍스처를 연결시켰다.
기존 코드 : http://www.iamgsi.com/entry/DirecrX-Managed-Create-a-Device-C
를 조금더 확장 시켰다.
이벤트 함수 OnResetDevice도 추가 했으며,
여기서 봐야 할 것은 윈도우 사이즈가 변할때 텍스처가 검정색으로 나올때가 있다.
이때 텍스처 함수 부분은 Managed로 해야 하는지는 잘 모르겠지만.
아래와 같은 인자를 사용하게 되는데 Managed를 할때는 몇개의 인자가 더 필요 하더라.

아래의 함수를 사이즈 변할때 호출해줘야 제대로 나오게 된다.
private void directXBaseView1_OnResetDevice(object sender, DeviceEventArgs e)
{
     ...
    if (texture != null)
        texture.Dispose();  // 이 코드를 넣지 않으면 메모리가 계속 누적된다. Texture가 계속해서 생성이 되는거 같다.
    texture = TextureLoader.FromFile(dev, @"d:\bbbb.jpg");
}

나머지는 타이머를 사용해서 화면은 계속해서 리프레쉬 해주었다.

Posted by gsi
: