독개

[OepnCv] 화면에 그림 그리기

by #독개#

OpenCv를 통해서 화면에 그림을 그릴수있다

다양하게 그리는 방법을 정리해두겠다

 

bitmap 자체에 그리기

using System;
using System.Drawing;
using OpenCvSharp;
using OpenCvSharp.Extensions;

public class Drawing
{
    Bitmap bmp = new Bitmap("파일경로"); //Bitmap bmp 객체를 하나만든다
    Graphics gr = Graphics.FromImage(bmp); //그래픽스로 불러온다
    gr.DrawRectangle(new Pen(Color.Red,3), 0,0,300,300); //bmp의 0,0부터 가로300 세로300의 사각형을 그린다
    //Mat으로 바꾸기전에 그림은 다그려놔야한다
    Mat ScreenMat = BitmapConverter.ToMat(bmp); //Mat으로 변경
    Cv2.ImShow("드로잉",ScreenMat); //띄워보기
}

 

Graphics gr = Graphics.FromImage(bmp);
gr.DrawRectangle(new Pen(Color.Red,두께), start x, start y, width, height); //속이빈네모
gr.FillRectangle(Brushes.Red, start x, start y, width, height); //속이꽉찬네모

 

Hwnd 핸들에 그리기

모두 동일하고 핸들로부터 값을 받아오면된다

Graphics gr = Graphics.FromHwnd(hwnd);

 

윈도우 스크린에 그리기

[DllImport("User32.dll")]
public static extern IntPtr GetDC(IntPtr hwnd);

[DllImport("user32.dll")]
public static extern IntPtr ReleaseDC(IntPtr hWnd, IntPtr hDC);
IntPtr desktopPtr = GetDC(IntPtr.Zero);
Graphics gr = Graphics.FromHdc(desktopPtr);
gr.DrawRectangle(new Pen(Color.Red,3), 0,0,300,300);
ReleaseDC(IntPtr.Zero, desktopPtr);

 

 

핸들이나 윈도우에 그리게되면 렌더링될때마다 지워진다

고로 while을 통해 지속적으로 그려주거나 해야한다

블로그의 정보

독한 개발자

#독개#

활동하기