当前位置:首页 » 股票涨停 » 股票软件绘图是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+使得图形硬件和应用程序相互隔离.从而使开发人员编写设备无关的应用程序变得非常容易。

热点内容
买基金20年能赚多少钱 发布:2025-06-17 12:04:22 浏览:905
期货穿仓了有剩下多少 发布: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