使用visual c ++在桌面上绘制

我正在写一个opencv应用程序,使用Visual Studio VC ++控制台应用程序使用激光束进行绘制。 我想在桌面上画线。 我知道绘图函数在GDI32.dll中是可用的,但是如何将GDI32.dll与我的vc代码整合在一起困惑。 你能提出一些好的解决scheme吗?

Solutions Collecting From Web of "使用visual c ++在桌面上绘制"

下面的代码在桌面上绘制一个蓝色的矩形。

#include <iostream> #include <Windows.h> int main() { /* hide console window */ ShowWindow(FindWindowA("ConsoleWindowClass", NULL), false); /* Calling GetDC with argument 0 retrieves the desktop's DC */ HDC hDC_Desktop = GetDC(0); /* Draw a simple blue rectangle on the desktop */ RECT rect = { 20, 20, 200, 200 }; HBRUSH blueBrush=CreateSolidBrush(RGB(0,0,255)); FillRect(hDC_Desktop, &rect, blueBrush); Sleep(10); return 0; } 

只是为了好玩。 直接在桌面上绘制的Mandelbrot分形。

 #define MAGNITUDE_CUTOFF 100 #define NUMCOLOURS 256 #define WIDTH 640 #define HEIGHT 200 #define UP 72 #define DOWN 80 #define LEFT 75 #define RIGHT 77 #define SPACE 32 #define ENTER 13 #define ESCAPE 27 #define TAB 9 #define INSERT 82 #include <stdio.h> #include <time.h> #include <windows.h> #include <iostream> using namespace std; int col(int x, int y); void fract(void); char op; int ch,max_iterations; double xmin = -2.10, xmax = 0.85, ymin = -1.5 , ymax = 1.5; double width_fact, height_fact; int main(){ COLORREF color = RGB(255,0,0); // COLORREF to hold the color info SetConsoleTitle("Pixel In Console!"); // Set text of the console so you can find the window HWND hwnd = FindWindow(NULL, "Pixel In Console?"); // Get the HWND HDC hdc = GetDC(hwnd); // Get the DC from that HWND width_fact = (xmax-xmin)/WIDTH; height_fact = (ymax-ymin)/HEIGHT; for( int x = 0 ; x < 640 ; x++ ){ for (int y = 0;y < 480; y++ ){ int blue = (col(x,y) & 0x0f) << 4; int green = (col(x,y) & 0xf0) << 0; int red = (col(x,y) & 0xf00) >> 4; SetPixel(hdc, x,y, RGB(red,green,blue)); } } system("pause"); ReleaseDC(hwnd, hdc); // Release the DC DeleteDC(hdc); // Delete the DC return(0); } void fract(){ int x,y,icount=0; width_fact = (xmax-xmin)/WIDTH; height_fact = (ymax-ymin)/HEIGHT; for (y=0;y<HEIGHT;y++){ for (x=0;x<WIDTH;x++){ // setcolor(col(x,y)); // gotoxy(x+3,y+3);printf("Û"); } } //setcolor(15); } int col( int x, int y){ int n,icount=0; float p,q,r,i,prev_r,prev_i; p= (( (float)x ) * width_fact) + (float)xmin; q= (( (float)y ) * height_fact) +(float)ymin; prev_i = 0; prev_r = 0; for (n=0; n <= NUMCOLOURS; n++){ r = (prev_r * prev_r) - (prev_i * prev_i) +p; i = 2 * (prev_r * prev_i) +q; if (( r*r + i*i) < MAGNITUDE_CUTOFF ){ prev_r = r; prev_i = i; } else { return n; } } return n; }