微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

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

Qt – 如何检测应用程序是否在GNOME或KDE上运行?

ID3D11DeviceContext :: Map性能低下

Windows 10:如何通过PowerShell立即激活新的个性化设置?

基于linuxterminal的桌面

有没有类似于Prism中使用的dektop应用程序事件聚合器?

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

#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,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); // 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,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; }

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐