WPFImagePrintTest.zip



회사에서 일을 하던중에 이미지 파일의 인쇄가 프로그램을 만들게 되었습니다.


웹을 뒤져보니까 윈폼용을 있지만 WPF용으로는 없는 것 같아서 이렇게 블로깅을 하게 되었네요!


매우 간추리자면 PridDialog를 사용하면 됩니다! 아시는 문들은 MSDN에 가서 보시면 되시겠구요. 저는 버튼을 누르면 이미지 출력!


인쇄를 누르면 인쇄 하는 것 까지 만들어 보겠습니다.


파일 -> 새로 만들기 -> 프로젝트


먼저 Xaml은


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<Window x:Class="WPFImagePrintTest.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        xmlns:local="clr-namespace:WPFImagePrintTest"
        mc:Ignorable="d"
        Title="MainWindow" Height="350" Width="525">
    <Grid>
        <Image Name="image" Height="250" Width="425" Margin="82,10,10,59"></Image>
 
        <Button x:Name="button1" Content="이미지!" HorizontalAlignment="Left" Margin="10,279,0,10" Width="75" Click="button1_Click"/>
        <Button x:Name="button" Content="인쇄" HorizontalAlignment="Left" Margin="110,279,0,10"  Width="75" Click="button_Click"/>
    </Grid>
</Window>
 
cs

버튼 2개 이미지뷰 한개를 만들어서 올려줍니다. 어차피 간단한 테스트 프로그램이니 대충~ 원하는 대로!


먼저 이미지를 불러오는 함수를 만들어 줍시다.


1
2
3
4
5
6
7
8
9
private ImageSource imageLoad() // 이미지를 불러오는 부분
{
    var bi = new BitmapImage();
    bi.BeginInit();
    bi.CacheOption = BitmapCacheOption.OnLoad;
    bi.UriSource = new Uri(@"..\Assets\images.png", UriKind.Relative);
    bi.EndInit();
    return bi;
}
cs

비트뱁 이미지를 생성후에 Uri를 통해서 이미지를 가져옵니다.

먼저 이미지 소스에 이미지를 넣는 버튼 이벤트를 해보겠습니다.

1
2
3
4
private void button1_Click(object sender, RoutedEventArgs e)   // 이미지 보여주는 함수
{
    image.Source = imageLoad();
}
cs

네 참 쉽죠? 그냥 이미지의 속성중에 소스라는 곳에 비트맵을 넣어주면 됩니다.


실행해보면?



네 잘 나옵니다!


자 이제 정말 중요한 인쇄 부분을 보겠습니다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
private void button_Click(object sender, RoutedEventArgs e) // 이미지를 인쇄하는 부분
{
    var bi = imageLoad();
 
    var vis = new DrawingVisual();
    var dc = vis.RenderOpen();
    dc.DrawImage(bi, new Rect { Width = bi.Width, Height = bi.Height });// 이것을 움직이면 크기를 바꿀 수 있습니다.
    dc.Close();
 
    var pdialog = new PrintDialog();
    if (pdialog.ShowDialog() == true)
    {   
        pdialog.PrintVisual(vis, "Smile Image");
    }
}
cs

비트맥에 이미지 로딩하는 부분을 넣은후

그 비트맵을 Visual이라는 형식으로 바꾸는 작업이 필요합니다. 그렇게 바뀌어진 Visual을 PrintDialog.PrintVisual에 넣으면 완성!


짠~ 전 pdf와 저의 인쇄기로 테스트해봤는데 잘 됩니다!


풀 소스와 프로젝트파일 까지 올려 놓을테니 많이 많이 도움이 되시길 바랍니다!


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
public partial class MainWindow : Window
{
    public MainWindow()
    {
        InitializeComponent();
        
    }
    private void button_Click(object sender, RoutedEventArgs e) // 이미지를 인쇄하는 부분
    {
        var bi = imageLoad();
 
        var vis = new DrawingVisual();
        var dc = vis.RenderOpen();
        dc.DrawImage(bi, new Rect { Width = bi.Width, Height = bi.Height });// 이것을 움직이면 크기를 바꿀 수 있습니다.
        dc.Close();
 
        var pdialog = new PrintDialog();
        if (pdialog.ShowDialog() == true)
        {   
            pdialog.PrintVisual(vis, "Smile Image");
        }
    }
    private void button1_Click(object sender, RoutedEventArgs e)   // 이미지 보여주는 함수
    {
        image.Source = imageLoad();
    }
    private ImageSource imageLoad() // 이미지를 불러오는 부분
    {
        var bi = new BitmapImage();
        bi.BeginInit();
        bi.CacheOption = BitmapCacheOption.OnLoad;
        bi.UriSource = new Uri(@"..\Assets\images.png", UriKind.Relative);
        bi.EndInit();
        return bi;
    }
}



cs



참고: http://stackoverflow.com/questions/265062/load-image-from-file-and-print-it-using-wpf-how


1. Windows Hello


이것이 무엇인가? 바로 생체 인증을 통해 컴퓨터에 로그인을 하는것!


특히 서피스 프로 4 에 탑재되어서 카메라를 바라보기만 해도 나를 인식하고 로그인을 해주는 것 입니다.


인텔 리얼 센스 기술을 이용해서 적외선으로 사람의 굴곡을 계산해서 로그인을 하는 것이라고 합니다.


제가 여기서 주목한 것은 적외선!! 왜냐하면 키넥트도 적외선이 되거든요!!! 그럼 이것으로 데스크탑에서 할수 있지 않을까?


라는 생각을 해보았는데요 네 됩니다 ㅎㅎㅎ


2. 하는 방법


2-1 메모장을 하나 연다


2-2


Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\DriverFlighting\Partner]

"TargetRing"="Drivers"


이렇게 적는다 귀찮으면 제가 첨부해놓은 파일을 받으세요


2-3 확장자를 reg로 마음에 드는 이름으로 저장한다.


저장된 파일! 이파일을 실행하면?

확인 확인 을 눌러줍니다.



키넥트 드라이브는 자동으로 깔리겠지만 레지스트리 추가로 인해 업데이트 됩니다.


온라인으로 소프트웨어 업데이트!



이렇게 한 후 컴퓨터를 재시작을 합니다



로그인 옵션으로 가보면 Windows Hello 가 사용 가능하다고 나옵니다!


윈도우즈 헬로우를 시작!


자기 얼굴을 등록해 줍니다!



완성!


그래서 저같은경우는 컴퓨터를 실행하면 키넥트가 빨갛게 되면서 윈도우즈 헬로우가 작동되네요!


이상으로 Kinect v2 로 윈도우즈 헬로우 하기 완성 입니다!


'Kinect' 카테고리의 다른 글

1. Kinect v2 개발과 환경 구축하기!  (0) 2016.11.07

게임기 보조 장치? 로 만들었지만 정작 게임기 보다는 산업 현장에서 더 많이 쓰인다는 키넥트!


처음 키넥트 360으로 나왔을때는 개발 서적도 좀 보이고 개발하는 분들도 좀 보이더만


엑스박스 원의 정책의 실패로 인해서 관련 도서도 없고 하시는 분들도 많이 보이지 않습니다.


그래서 제가 한 번 해 보겠습니다.


1. 키넥트 v2 구입


저같은 경우는 중고로 구입했습니다 중고는 10만원 정도이고 새거는 20만원 정도 하더군요 + 댄스 센트럴 해서요!


2. 커넥터 구입!


이렇게 생긴것을 구매하시면 됩니다. 7만원대 네요 원래 윈도우용으로도 나왔으나 이내 단종이 되고 모든 키넥트는 저 어댑터를 통해서 윈도우 10과 연결 할 수 있고 개발 할 수 있습니다.


이제 키넥트와 어댑터를 윈10 디바이스에 연결을 합니다


이제 개발을 위한 SDK를 설치해 보겠습니다.


먼저 마이크로소프트 사이트에가서 Kinect for WIndows SDK 2.0 을 받습니다

https://www.microsoft.com/en-us/download/details.aspx?id=44561


반드시 2.0 을 받읍시다 1.8도 있지만 키넥트360 용 SDK입니다. v2는 2.0 이기에 꼭 2.0을 받읍시다!





실행후 다음다음 다음만 눌러주면 설치 완료!



SDK Browser 을 실행해본 모습  샘플로 C# C++ 로 실행도 가능하고 설치도 가능합니다.

또한 자신의 컴퓨터가 잘 맞는지 보려면



저의 경우 USB가조금 위험하지만 작동에는 이상이 없습니다!


SDK와 함께 추가된 앱들 입니다 이렇게 되면 개발환경이 구축 된 것 입니다.! 참 쉽죠?


Color Basics-D2d를 실행시켜 보면 제방이 잘 나옵니다Private 하기때문에 좀 가렸습니다 하하핳하하




주의!!!!!!!!!!!


최소 사양입니다... 특히 USB 3.0에 대해서는 메인보드 별 성능 이슈가 있다고 합니다. 특히


https://social.msdn.microsoft.com/Forums/en-US/bb379e8b-4258-40d6-92e4-56dd95d7b0bb/confirmed-list-of-usb-30-pcie-cardslaptopsconfigurations-which-work-for-kinect-v2-during?forum=kinectv2sdk 에 보시면 몇멸 USB에 대해서는 안될수도 있다고 하니 자신의 컴퓨터 사양을 잘 보세요!



'Kinect' 카테고리의 다른 글

2. Kinect로 Windows Hello 작동 하기  (0) 2016.11.07

+ Recent posts