當前位置:首頁 » 股票漲停 » 股票軟體繪圖是gdi嗎

股票軟體繪圖是gdi嗎

發布時間: 2021-06-16 15:28:47

⑴ 利用GDI繪制波形圖如何做到那種股票趨勢圖的

在winform上直接顯示的話 可以直接this.Refresh或this.Invalidate
都能觸發Form_Paint
在pictureBox的話 只要pictureBox.Refresh或Invaildate就能觸發pictureBox_Paint

事件像下面這樣
private void pic_Paint(object sender, PaintEventArgs e)
{
e.Graphics.DrawLine(....) //這是畫線 功能你就自己寫吧
}

⑵ GDI 繪圖流程(如何繪制簡單的幾何圖形)

一、獲得繪圖的窗口句柄
方法(詳細參數及其調用可以看考MSDN):
1、 HWND FindWindow(LPCTSTR lpClassName, LPCTSTR lpWindowName)
HWND FindWindowEx(HWND hwndParent, HWND hwndChildAfter,LPCTSTR lpClassName, LPCTSTR lpWindowName)
2、 HWND WindowFromPoint(POINT& Point)
3、 BOOL CALLBACK EnumChildProc(HWND hwnd,LPARAM lParam)
BOOL CALLBACK EnumChildWindows(HWND hWndParent, WNDENUMPROC lpEnumFunc,LPARAM lParam)
BOOL CALLBACK EnumWindows(WNDENUMPROC lpEnumFunc, LPARAM lParam)
BOOL CALLBACK EnumWindowsProc(HWND hwnd, LPARAM lParam)
二、由窗口句柄得到設備環境句柄HDC
方法:BeginPaint、GetWindowDC、GetDC。這些函數都需要步驟一中的HWND的句柄。調用這些函數後要釋放句柄,相應的有EndPaint、ReleaseDC進行清理。
1、 採用BeginPaint獲取HDC
HDC hdc;
PAINTSTRUCT ps;// 保存
hdc = ::BeginPaint( hwnd, &ps );
// 此處添加繪圖代碼
::EndPaint( hwnd, &ps );
說明:獲得的hdc的有效區域僅限於客戶區無效區域的設備環境句柄,不包括標題欄、邊框等。
2、 採用GetWindowDC獲取HDC
HDC hdc = ::GetWindowDC( hwnd );
// 此處添加繪圖代碼
::ReleaseDC( hwnd, hdc );
說明:繪制區域是整個窗口(邊框、標題欄、客戶區的總和)。
3、 採用GetDC獲取HDC
HDC hdc = ::GetDC( hwnd );
// 此處添加繪圖代碼
::ReleaseDC( hwnd, hdc );
說明:獲得的hdc的有效區域僅限於客戶區有效區域的設備環境句柄,不包括標題欄、邊框等。
三、圖形繪制方法
1、 畫筆CreatePen
繪畫之前先選擇畫筆,畫筆的功能主要是繪制邊框,其函數原型如下:
WINGDIAPI HPEN WINAPI CreatePen(
__in int iStyle, // 畫筆的類型,比如是實線,還是虛線等等。
__in int cWidth, // 線的寬度。
__in COLORREF color // 線的顏色。
);
// iStyle參數可選值:
PS_SOLID = 0;// 實線
PS_DASH = 1;// 段線; 要求筆寬<=1
PS_DOT = 2;// 點線; 要求筆寬<=1
PS_DASHDOT = 3;// 線、點; 要求筆寬<=1
PS_DASHDOTDOT = 4;// 線、點、點; 要求筆寬<=1
PS_NULL = 5;// 不可見
PS_INSIDEFRAME = 6;// 實線; 但筆寬是向里擴展
返回值為畫筆類型,SelectObject函數選中。選中後,返回原來畫刷的句柄用來恢復時使用。圖形繪制完畢後使用DeleteObject函數將其釋放。
SelectObject函數說明:
函數功能:該函數選擇一對象到指定的設備上下文環境中,該新對象替換先前的相同類型的對象。
函數原型:HGDIOBJ SelectObject(HDC hdc, HGDIOBJ hgdiobj);
參數:
hdc:設備上下文環境的句柄。
hgdiobj:被選擇的對象的句型,該指定對象必須由如下的函數創建。
點陣圖:CreateBitmap, CreateBitmapIndirect, CreateCompatible Bitmap, CreateDIBitmap, CreateDIBsection(只有內存設備上下文環境可選擇點陣圖,並且在同一時刻只能一個設備上下文環境選擇點陣圖)。
畫筆:CreateBrushIndirect, CreateDIBPatternBrush, CreateDIBPatternBrushPt, CreateHatchBrush, CreatePatternBrush, CreateSolidBrush。
字體:CreateFont, CreateFontIndirect。
筆:CreatePen, CreatePenIndirect。
區域:CombineRgn, CreateEllipticRgn, CreateEllipticRgnIndirect, CreatePolygonRgn, CreateRectRgn, CreateRectRgnIndirect。
返回值:如果選擇對象不是區域並且函數執行成功,那麼返回值是被取代的對象的句柄;如果選擇對象是區域並且函數執行成功,返回如下一值;
DeleteObject函數說明:
函數功能:該函數刪除一個邏輯筆、畫筆、字體、點陣圖、區域或者調色板,釋放所有與該對象有關的系統資源,在對象被刪除之後,指定的句柄也就失效了。
函數原型:BOOL DeleteObject(HGDIOBJ hObject);
參數:
hObject:邏輯筆、畫筆、字體、點陣圖、區域或者調色板的句柄。
返回值:成功,返回非零值;如果指定的句柄無效或者它已被選入設備上下文環境,則返回值為零。
2、 畫刷
畫刷的功能主要是填充區域內的顏色,創建畫刷的方法如下:
A、CreateSolidBrush函數
函數功能:該函數創建一個具有指定顏色的邏輯刷子。
函數原理:HBRUSH CreateSolidBrush(COLORREF crColor);
參數:
crColor:指定刷子的顏色。
返回值:如果該函數執行成功,那麼返回值標識一個邏輯實心刷子;如果函數失敗,那麼返回值為NULL。
B、GetStockObject函數
函數功能:該函數檢索預定義的備用筆、刷子、字體或者調色板的句柄。
函數原型:HGDIOBJ GetStockObject(int fnObject);
參數:
fnObject:指定對象的類型,該參數可取如下值之一;
BLACK_BRUSH:黑色畫筆;
DKGRAY_BRUSH:暗灰色畫筆;
DC_BRUSH:在Windows98,Windows NT 5.0和以後版本中為純顏色畫筆,預設色為白色,可以用SetDCBrushColor函數改變顏色,更多的信息參見以下的注釋部分。
GRAY_BRUSH:灰色畫筆;
HOLLOW_BRUSH:空畫筆(相當於HOLLOW_BRUSH);
LTGRAY_BRUSH:亮灰色畫筆;
NULL_BRUSH:空畫筆(相當於HOLLOW_BRUSH);
WHITE_BRUSH:白色畫筆;BLACK_PEN:黑色鋼筆;
DC_PEN:在Windows98、Windows NT 5.0和以後版本中為純色鋼筆,預設色為白色,使用SetDCPenColor函數可以改變色彩,更多的信息,參見下面的注釋部分。
WHITE_PEN:白色鋼筆;
ANSI_FIXED_FONT:在Windows中為固定間距(等寬)系統字體;
ANSI_VAR_FONT:在Windows中為變間距(比例間距)系統字體;
DEVICE_DEFAUCT_FONT:在WindowsNT中為設備相關字體;
DEFAULT_GUI_FONT:用戶界面對象預設字體,如菜單和對話框;
OEM_FIXED_FONT:原始設備製造商(OEM)相關固定間距(等寬)字體;
SYSTEM_FONT:系統字體,在預設情況下,系統使用系統字體繪制菜單,對話框控制和文本;
SYSTEM_FIXED_FONT:固定間距(等寬)系統字體,該對象僅提供給兼容16位Windows版本;
DEFAULT_PALETTE:預設調色板,該調色板由系統調色板中的靜態色彩組成。
返回值:如果成功,返回值標識聲請的邏輯對象,如果失敗,返回值為NULL。
C、CreateHatchBrush函數
函數功能:該函數可以創建一個具有指定陰影模式和顏色的邏輯刷子。
函數原型:HBRUSH CreateHatchBrush(int fnStyle, COLORREF clrref);
參數:
fnStyle:指定刷子的陰影樣式。該參數可以取下列值,這些值的含義為:
HS_BDIAGONAL:表示45度向下,從左至右的陰影;
HS_CROSS:水平和垂直交叉險影;
HS_DIAGCROSS:45度交叉陰影;
HS_FDIAGONAL:45度向上,自左至右陰影;
HS_HORIZONTAL:水平陰影;
HS_VERTICAL:垂直陰影。
cirref:指定用於陰影的刷子的前景色。
返回值:如果函數執行成功,那麼返回值標識為邏輯刷子;如果函數執行失敗,那麼返回值為NULL。
畫刷的選中和釋放,請參照畫筆。
3、 點SetPixel
函數功能:該函數將指定坐標處的像素設為指定的顏色。
函數原型:COLORREF SetPixel(HDC hdc, int X, int Y, COLORREF crColor);
參數:
hdc:設備環境句柄。
X:指定要設置的點的X軸坐標,按邏輯單位表示坐標。
Y:指定要設置的點的Y軸坐標,按邏輯單位表示坐標。
crColor:指定要用來繪制該點的顏色。
返回值:如果函數執行成功,那麼返回值就是函數設置像素的RGB顏色值。這個值可能與crColor指定的顏我色有不同,之所以有時發生這種情況是因為沒有找到對指定顏色進行真正匹配造成的;如果函數失敗,那麼返回值是C1。
4、 直線MoveToEx、LineTo
A、 MoveToEx
函數功能:將當前位置指定為特定的某一點
函數原型:BOOL MoveToEx( __in HDC hdc, __in int X, __in int Y, __out LPPoint lpPoint )
參數:
hdc:設備環境句柄。
X:指定要設置的點的X軸坐標,按邏輯單位表示坐標。
Y:指定要設置的點的Y軸坐標,按邏輯單位表示坐標。
lpPoint:指向一個POINT結構,用來接收前一位置,為空時,當前位置不被返回。
返回值:執行成功返回非零,否則返回值為零。
B、 LineTo
函數功能:從當前點到目標點進行畫線。
函數原型:BOOL LineTo( int x, int y )
參數說明:
X:目標點的橫坐標。
Y:目標點的縱坐標。
返回值:成功非零,其它返回零。
5、 矩形Rectangle
函數功能:該函數畫一個矩形,用當前的畫筆畫矩形輪廓,用當前畫刷進行填充。
函數原型:BOOL Rectangle(HDC hdc, int nLeftRect, int nTopRect, int nRightRect, int nBottomRect);
參數:
hdc:設備環境句柄。
nLeftRect:指定矩形左上角的邏輯X坐標。
nTopRect:指定矩形左上角的邏輯Y坐標。
nRightRect:指定矩形右下角的邏輯X坐標。
nBottomRect:指定矩形右下角的邏輯Y坐標。
返回值:如果函數調用成功,返回值非零,否則返回值為0。
6、 橢圓Ellipse
函數功能:該函數畫一個橢圓形,用當前的畫筆畫矩形輪廓,用當前畫刷進行填充。
函數原型:BOOL Ellipse( HDC hdc, int x1, int y1, int x2, int y2 )
參數:
hdc:設備環境句柄。
x1:指定橢圓形左上角的邏輯X坐標。
y1:指定橢圓形左上角的邏輯Y坐標。
x2:指定橢圓形右下角的邏輯X坐標。
y2:指定橢圓形右下角的邏輯Y坐標。
返回值:如果函數調用成功,返回值非零,否則返回值為0。
GDI含義是圖形設備介面,主要任務是負責系統與繪圖程序之間的信息交換,處理所有Windows程序的圖形輸出。GDI的出現使程序員無需要關心硬體設備及設備驅動,就可以將應用程序的輸出轉化為硬體設備上的輸出,實現了程序開發者與硬體設備的隔離,大大方便了開發工作。

⑶ E語言中畫板與GDI繪圖的關系大嗎

易語言畫板使用的就是GDI,只是把一些GDI函數給封裝起來,功能沒有GDI多,也沒有GDI強大,而且效率也低了一些,但是好處嘛,簡單......原理是一樣的

⑷ GDI繪圖

圖形編程

⑸ 64位win7系統下可以用gdi 繪圖嗎

在一個圖片上使用OpengL繪圖, 在另一個透明圖片上調用GDI函數TextOut輸出文字,然後再調用GDI函數BitBlt把文字圖片粘貼到OpenGL圖片上。

新方法在xp上運行一切正常。
但是在win7上運行,會出現問題,主要表現為:只顯示文字,不顯示OpenGL圖層。

後來總結,Win7下,同時使用OpenGL函數,和GDI繪圖函數,會出現問題。

⑹ 關於GDI繪圖的問題

做一個MFC單文檔程序,代碼多的是!自己找下

⑺ GDI是WIN32下的繪圖,GDI+是MFC下的繪圖,對不對

沒太看懂你的做法。
但是,我不建議你依賴gdi的函數來直接求算交點和區域。通常的做法是:你自己依據數據和幾何公式去計算交點,進而得到區域,然後用gdi來繪圖。你應當把gdi的作用僅僅局限於在你的圖形表現出來,不要對它有其他的期望。你可以參考一下計算機圖形學和gis(地理信息系統)方面的一些資料或代碼。

⑻ 為什麼java和C#都有GDI繪圖功能

C#就是原來的visual J,開發思想和運行機制是和Sun java理念是一致的,也是和Java競爭的產品。低層編程是一致的,只是形式不同。

⑼ directdraw與GDI區別

雖然兩者都可以用來2D繪圖,但差別還是很大的。

DirectDraw的功能上要遠遠大於GDI,因為DirectDraw多用於游戲開發,GDI或GDI+多用於軟體開發。繪圖功能就可想而知了。

而且GDI是用於Windows底層API作為基本繪圖方法,比如Windows中的窗口都是GDI輸出的,如果你學過SDK(API)編程的化,對此會很熟悉,比如你看看任務管理器的進程,幾乎所有進程都需要載入一個重要的dll,那就是「gdi32.dll」.
而directdraw則多用於游戲中或媒體中,用於對圖形操作更細膩的領域,當然目前更廣泛的技術是Direct3D或OpenGL,當然directdraw也是DirectX中不可缺少的一部分。

總結一下。windows系統的繪圖要求並不高,因此gdi是這里的老大,但對於專業的游戲或圖形開發商,微軟有創造了DirectX(其中包括directdraw)來滿足他們的要求。

⑽ GDI繪圖技術是歷史背景

GDI
GDI是Graphics Device Interface的縮寫,含義是圖形設備介面,它的主要任務是負責系統與繪圖程序之間的信息交換,處理所有Windows程序的圖形輸出。 在Windows操作系統下,絕大多數具備圖形界面的應用程序都離不開GDI,我們利用GDI所提供的眾多函數就可以方便的在屏幕、列印機及其它輸出設備上輸出圖形,文本等操作。GDI的出現使程序員無需要關心硬體設備及設備驅動,就可以將應用程序的輸出轉化為硬體設備上的輸出,實現了程序開發者與硬體設備的隔離,大大方便了開發工作。
GDI+
GDI+是Windows XP中的一個子系統,它主要負責在顯示屏幕和列印設備輸出有關信息,它是一組通過C++類實現的應用程序編程介面。顧名思義,GDI+是以前版本GDI的繼承者,出於兼容性考慮,Windows XP仍然支持以前版本的GDI,但是在開發新應用程序的時候,開發人員為了滿足圖形輸出需要應該使用GDI+,因為GDI+對以前的Windows版本中GDI進行了優化,並添加了許多新的功能。 作為圖形設備介面的GDI+使得應用程序開發人員在輸出屏幕和列印機信息的時候無需考慮具體顯示設備的細節,他們只需調用GDI+庫輸出的類的一些方法即可完成圖形操作,真正的繪圖工作由這些方法交給特定的設備驅動程序來完成,GDI+使得圖形硬體和應用程序相互隔離.從而使開發人員編寫設備無關的應用程序變得非常容易。

熱點內容
期貨穿倉了有剩下多少 發布:2025-06-17 11:56:57 瀏覽:91
主力在股市有多少錢天天流出 發布:2025-06-17 11:55:14 瀏覽:555
庫爾勒交維修基金在哪裡交 發布:2025-06-17 11:36:25 瀏覽:204
期貨本金多少可以做一手粳米 發布:2025-06-17 11:16:07 瀏覽:654
股權出質如何變更 發布:2025-06-17 11:15:20 瀏覽:573
鵬華優質治理基金凈值今天星多少 發布:2025-06-17 11:08:56 瀏覽:588
基金收益短期多少個點賣好 發布:2025-06-17 11:02:27 瀏覽:532
願景基金怎麼投入 發布:2025-06-17 10:56:53 瀏覽:410
股票市場增值叫什麼影響 發布:2025-06-17 10:35:19 瀏覽:408
有直接購買力的是什麼貨幣 發布:2025-06-17 10:34:11 瀏覽:161