私は、Visual Studio VC++コンソールアプリケーションを使用してレーザービームを使用して描画するopencvアプリケーションを作成しています。私はデスクトップ上に線を描きたい。 私は描画関数はGDI32.dllで利用できるが、GDI32.dllを私のVCコードと統合する方法を混乱させることを知っています。あなたは良い解決策を提案できますか?Visual C++を使用してデスクトップに描画
4
A
答えて
9
次のコードは、デスクトップに青い四角形を描いています。
#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;
}
ちょうど楽しいです。デスクトップに直接描かれたマンデルブロフラクタル。
#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;
}
+5
そこでは「Sleep(10)」関数呼び出しが何をしていますか?また、それは本当にコンソールウィンドウを隠す/表示する標準的な方法ではありません... –
+2
情報ありがとうございます。出来た!!!! –
関連する問題
- 1. Visual C++ CPaintDC、CDCを使用してCViewでイメージを再描画する方法
- 2. デスクトップ上でマウスポインタで描画します
- 3. デスクトップの壁紙を置き換える/デスクトップに描画する
- 4. WriteableBitmapを使用してキャンバスに描画すると、C#WPF
- 5. デスクトップの背景に描画する(WIN32)
- 6. デスクトップ上のアイコンの下に描画
- 7. C#でGEO座標を使用してマップを描画する
- 8. jQueryを使用してテーブルを描画
- 9. invalidateSelf()を使用してタイマによって描画可能な描画を再描画する
- 10. drawRectを使用して再描画
- 11. Visual C# - パネル上に円を描画しても表示されない
- 12. Lionのデスクトップにはどのように描画しますか?
- 13. ImageMagickを使用して画像上にhtmlを描画
- 14. Leafletjs描画ライブラリを使用して楕円を描く
- 15. WPFとC#を使用してサーフェスを描画して修正する
- 16. デスクトップの上/上に描画しますか?
- 17. C++ setpixel関数を使用してグラフにトーンカーブ(ガンマ)を描画する方法
- 18. C#を使用してタブコントロール上にイメージを描画する方法は?
- 19. ウィンドウコンテンツをビットマップに描画するには(Win32 C++を使用)
- 20. グラフ描画を使用したAndroid描画グラフ
- 21. Visual C++を使用してwin32 APIに画像ボックスを追加するには
- 22. JavaFXチャートAPIを使用してチャート画像を描画
- 23. LibCanvasを使用して画像を描画する
- 24. javascriptを使用してhtml5で画像を描画する
- 25. マウスカーソルをキャプチャして画像バッファに描画するC#
- 26. C#描画テキスト
- 27. C#SlimDXを使用してウィンドウ/デスクトップのスクリーンショットを取る
- 28. C#とWPFを使用して折れ線グラフを描画するのに何を使用しますか?
- 29. C#描画が描画されない
- 30. Scala-JSを使用してHTMLキャンバスに描画するには
これは、OpenCVよりもwin32とgdiに関連しています。私はそれを適切にタグ付けすることをお勧めします。 VC++でGDIを使う方法を正確に示すGDIのチュートリアルが数多くあります。 OpenCVプロジェクトでは、適切なライブラリパス、ヘッダー、および適切なGDIライブラリをリンクして機能させるだけです。本当に魔法はありません。 – karlphillip
が変更されましたありがとう! –
私はWin32 APiを使用していません。私のコードはネイティブc、C++にありますGDIライブラリを使用することはできません! –