Arc 画一个圆弧
BeginPath 启动一个路径分支
CancelDC 取消另一个线程里的长时间绘图 *** 作
Chord 画一个弦
CloseEnhMetaFile 关闭指定的增强型图元文件设备场景,并将新建的图元文件返回一个句柄
CloseFigure 描绘到一个路径时,关闭当前打开的图形
CloseMetaFile 关闭指定的图元文件设备场景,并向新建的图元文件晌裤悉返回一个句柄
CopyEnhMetaFile 制作指定增强型图元文件的一个副本(拷贝)
CopyMetaFile 制作指定(标准)图元文件的一个副本
CreateBrushIndirect 在一个LOGBRUSH数据结构的基础上创建一个刷子
CreateDIBPatternBrush 用一幅与设备无关宴乎的位图创建一个刷子,以便指定刷子样式(图案)
CreateEnhMetaFile 创建一个增强型的图元文件设备场景
CreateHatchBrush 创建带有阴影图案的一个刷子
CreateMetaFile 创建一个图元文件设备场景
CreatePatternBrush 用指定了刷子图案的一幅位图创建一个刷子
CreatePen 用指定的样式、宽度和颜色创建一个画笔
CreatePenIndirect 根据指定的LOGPEN结构创建一个画笔
CreateSolidBrush 用纯色创建一个刷子
DeleteEnhMetaFile 删除指定的增强型图元文件
DeleteMetaFile 删除指定的图元文件
DeleteObject 删除GDI对象,对象使用的所有系统资源都会被释放
DrawEdge 用指定的样式描绘一个矩形的边框
DrawEscape 换码(Escape)函数将数据直接发至显示设备驱动程序
DrawFocusRect 画一个焦点矩形
DrawFrameControl 描绘一个标准控件
DrawState 为一幅图象或绘图 *** 作应用各式各样的效果
Ellipse 描绘一个椭圆,由指定的矩形围绕
EndPath 停止定义一个路径
EnumEnhMetaFile 针对一个增强型图元文件,列举其中单独的图元文件记录
EnumMetaFile 为一个标准的windows图元文件枚举单独的图元文件记录
EnumObjects 枚举可随同指定设备场景使用的画笔和刷子
ExtCreatePen 创建一个扩展画笔(装饰或几何)
ExtFloodFill 在指定的设备场景里,用当前选择的刷子填充一个区域
FillPath 关闭路径中任何打开的图形,并用当前刷子填充
FillRect 用指定的刷子填充一个矩形
FlattenPath 将一个路径中的所有曲线都转换成线段
FloodFill 用当前选定的刷子在指定的设备场景中填充一个区域
FrameRect 用指定的刷子围绕一个矩形画一个边框
GdiComment 为指定的增强型图元文件设备场景添加一条注释信息
GdiFlush 执行任何未决的绘图 *** 作
GdiGetBatchLimit 判断有多少个GDI绘图命令位于队列中
GdiSetBatchLimit 指定有多少个GDI绘图命令能够进入队列
GetArcDirection 画圆弧的时候,判断当前采用的绘图方向
GetBkColor 取得指定设备场景当前的背景颜色
GetBkMode 针对指定的设备场景,取得当前的背景填充纯游模式
GetBrushOrgEx 判断指定设备场景中当前选定刷子起点
GetCurrentObject 获得指定类型的当前选定对象
GetCurrentPositionEx 在指定的设备场景中取得当前的画笔位置
GetEnhMetaFile 取得磁盘文件中包含的一个增强型图元文件的图元文件句柄
GetEnhMetaFileBits 将指定的增强型图元文件复制到一个内存缓冲区里
GetEnhMetaFileDescription 返回对一个增强型图元文件的说明
GetEnhMetaFileHeader 取得增强型图元文件的图元文件头
GetEnhMetaFilePaletteEntries 取得增强型图元文件的全部或部分调色板
GetMetaFile 取得包含在一个磁盘文件中的图元文件的图元文件句柄
GetMetaFileBitsEx 将指定的图元文件复制到一个内存缓冲区
GetMiterLimit 取得设备场景的斜率限制(Miter)设置
GetNearestColor 根据设备的显示能力,取得与指定颜色最接近的一种纯色
GetObjectAPI 取得对指定对象进行说明的一个结构
GetObjectType 判断由指定句柄引用的GDI对象的类型
GetPath 取得对当前路径进行定义的一系列数据
GetPixel 在指定的设备场景中取得一个像素的RGB值
GetPolyFillMode 针对指定的设备场景,获得多边形填充模式
GetROP2 针对指定的设备场景,取得当前的绘图模式
GetStockObject 取得一个固有对象(Stock)
GetSysColorBrush 为任何一种标准系统颜色取得一个刷子
GetWinMetaFileBits 通过在一个缓冲区中填充用于标准图元文件的数据,将一个增强型图元文件转换成标准windows图元文件
InvertRect 通过反转每个像素的值,从而反转一个设备场景中指定的矩形
LineDDA 枚举指定线段中的所有点
LineTo 用当前画笔画一条线,从当前位置连到一个指定的点
MoveToEx 为指定的设备场景指定一个新的当前画笔位置
PaintDesk 在指定的设备场景中描绘桌面墙纸图案
PathToRegion 将当前选定的路径转换到一个区域里
Pie 画一个饼图
PlayEnhMetaFile 在指定的设备场景中画一个增强型图元文件
PlayEnhMetaFileRecord 回放单独一条增强型图元文件记录
PlayMetaFile 在指定的设备场景中回放一个图元文件
PlayMetaFileRecord 回放来自图元文件的单条记录
PolyBezier 描绘一条或多条贝塞尔(Bezier)曲线
PolyDraw 描绘一条复杂的曲线,由线段及贝塞尔曲线组成
Polygon 描绘一个多边形
Polyline 用当前画笔描绘一系列线段
PolyPolygon 用当前选定画笔描绘两个或多个多边形
PolyPolyline 用当前选定画笔描绘两个或多个多边形
Rectangle 用当前选定的画笔描绘矩形,并用当前选定的刷子填充
RoundRect 用当前选定的画笔画一个圆角矩形,并用当前选定的刷子在其中填充
SelectClipPath 将设备场景当前的路径合并到剪切区域里
SelectObject 为当前设备场景选择图形对象
SetArcDirection 设置圆弧的描绘方向
SetBkColor 为指定的设备场景设置背景颜色
SetBkMode 指定阴影刷子、虚线画笔以及字符中的空隙的填充方式
SetBrushOrgEx 为指定的设备场景设置当前选定刷子的起点
SetEnhMetaFileBits 用指定内存缓冲区内包含的数据创建一个增强型图元文件
SetMetaFileBitsEx 用包含在指定内存缓冲区内的数据结构创建一个图元文件
SetMiterLimit 设置设备场景当前的斜率限制
SetPixel 在指定的设备场景中设置一个像素的RGB值
SetPixelV 在指定的设备场景中设置一个像素的RGB值
SetPolyFillMode 设置多边形的填充模式
SetROP2 设置指定设备场景的绘图模式。与vb的DrawMode属性完全一致
SetWinMetaFileBits 将一个标准Windows图元文件转换成增强型图元文件
StrokeAndFillPath 针对指定的设备场景,关闭路径上打开的所有区域
StrokePath 用当前画笔描绘一个路径的轮廓。打开的图形不会被这个函数关闭
UnrealizeObject 将一个刷子对象选入设备场景之前,如刷子的起点准备用SetBrushOrgEx修改,则必须先调用本函数
WidenPath 根据选定画笔的宽度,重新定义当前选定的路径
1、首先,在设置文件属性之前,要准备好目标文件,大家可自行选择相应文件。2、准备好目标文件后,打开“易语言”程序,新建“Windows窗口程序”并进入“Windows窗口程序”设计手颂界面。
3、在已创建好的“Windows窗口程序”的界面上,绘制标签组件、编辑框组件、拖放对象及按钮组件各一个戚旦,还有,四个选择框组件。调整好各组件的毕仔郑相对位置。
4、修改窗口、标签、按钮、拖放对象的标题属性,并规范命名相关组件的名称,为后续的编程开发做好准备。
5、窗口界面搭建完毕,进入编写代码阶段。首先,要注册一下拖放对象,并修改拖放对象的“接收文件”属性为真,然后编写代码:
6、代码编写完毕,进入程序测试阶段。拖拽测试文件至编辑框,勾选相关选择框,并点击“置文件属性”按钮,然后查看测试文件的属性
要列出“所有的画图函数”,未免太多了吧,你还是在网上搜一些有关图形设备接口GDI的课件吧!任何图形程序的输出,都离不开图形设备接口GDI(Graphic Device Interface),它是管理Windows应用程序在窗口内的绘图 *** 作和与此相关的许多其它信息。如图形设备(打印机、显示器)的信息、绘图的坐标系统和映射模式、绘图工具的当前状态(什么样的画笔、画刷、文本的前景色与背景色、文本所使用的字体)。
Windows的GDI绘制的各种图形(点、线、圆、多边形、矩形等)是与设备无关的,即在屏幕的窗口内绘图与在打印机上绘图是相似的。GDI是一个可执行程序,它接收Windows应用程序的绘图请求(表现为GDI调用),并将它们传送给相应的设备驱动程序,再由设备驱动程序驱动相应的前念乱硬件设备,如打印机或显示器输出。
1 绘制点与线
1)画点
CDC类的成员函数SetPixel用来在指定位置上绘制一个特定的像素点,其原型为:
COLORREF SetPixel( POINT point, COLORREF crColor )
其中参数point指定所绘制的点,crColor指定画点所用的颜色。
倘若要在屏幕的(100,100)处画一个红色点,则代码为:
pDC->SetPixel(CPoint(100,100),RGB(255,0,0))
2)画直线
画直线需要LineTo()和MoveTo()两个函数的配合使用。
LineTo()函数以当前位置所在的点为直线的起点,另指定一个点为直线的终点,画出一段直线高谈。直线的颜色通过画笔的颜色来设定,在后面介绍。LineTo()函数原型说明如下:
BOOL CDC:: LineTo(int nXEnd, int nYEnd)
直线的终点位置由(nXEnd, nYEnd)指定。如果函数调用成功,那么该点就成为当前位置,并返回TRUE,否则返回FALSE。
MoveTo()函数只是将当前位置移动到指定位置,它并没有画出直线,其函数说明为:
BOOL CDC:: MoveTo (int X, int Y)
2 绘制封闭图形
1)画矩形
BOOL Rectangle( int x1, int y1, int x2, int y2 )
BOOL Rectangle( LPCRECT lpRect )
此函数成功调用后返回非0值,否则返回0。其中参数(x1,y1)为指定矩形的左上角逻辑x与y坐标;(x2,y2)为指定矩形右下角的逻辑x与y坐标。参数lpRect为一个矩形结构[3]的指针,用它来表示矩形的四个角。
2)画椭圆或圆
使用CDC的成员函数Ellipse,可以使用当前笔绘制一个用当前画刷填充的椭圆或圆。其函数原型如下:
BOOL Ellipse(int x1, int y1, int x2, int y2 )
BOOL Ellipse( LPCRECT lpRect )
这两个函数画椭圆成功后返回非0值,否则返回0。所画椭圆高度为y2-y1,宽度为x2-x1。在该函数中,椭圆是由其外接矩形来确定的。外接矩形的中心与椭圆中心重合,矩形的长和宽和椭圆的长短轴相等。函数中的参数与画矩形的相仿,分别表示椭圆外接矩形的左上角和右下角坐标。
3 画笔与画刷
3.1 画笔
画笔是绘图的基本工具,在MFC中画笔是CPen类的对象,它用来在DC上完成绘制线条的任务。初始化时,系统自动提供了一支黑色的默认画笔。如果程序设计人员对这个默认的画笔不满意,可以自己创建画笔来替换它。所谓的自定义画笔,就是程序员自己创建的CPen类对象,创建画笔对象是,需要使用CPen类的构造函数,它的原型为:
CPen(Int style,int width ,COLORREF color);
style:画笔的样式
width:画笔的宽度
color:画笔的颜色(颜色用RGB值来描述)
3.2 画刷
类CBrush封装了Windows图形设备接口(GDI)中的画刷。使用CBrush对象之前要构造它,然后传给需要画刷的CDC成员函数。画刷可以是实线的、阴影线的或图案的。
在进行区域填充或绘制封闭图形时,需要用到画刷。MFC把GDI画刷封装在CBrush类中。画刷分三种基本类型:纯色画刷、阴影画刷和图案画刷。
纯色画刷绘图使用单色来定义,颜色由RGB()函数来确慧档定。纯色画刷可以采用直接声明的方法,例如:
CBrush Brush(RGB(255,0,0))//创建一个红色画刷。
也可以采用分步方法,由CreateSolidBrush()函数创建。
CBrush Brush
Brush->Create->CreateSolidBrush(RGB(255,0,0))
Windows预定义了七种画刷,包括:BLACK_BRUSH、 DKGRAY_BRUSH、 GRAY_BRUSH、LTGRAY_BRUSH、HOLLOW_BRUSH、NULL_BRUSH和WHITE_BRUSH。可以参照CPen类的方法,采用CreateStockObject()来使用预定义的画刷。
///////////////////////////////////////////
3)直线
(1)当鼠标左键按下时,需要将鼠标当前按下点保存起来,当鼠标d起时,也需要将d起点保存,因此为CMyGraphicView类添加一个CPoint类型的保护型变量m_ptStart和一个CPoint类型的保护变量m_ptEnd,并在View类构造函数中将其初始化为0。
protected:
UINT m_nDrawType//保存用户选择的功能
CRect m_rectDraw//鼠标按下到d起构成的区域
BOOL m_bNeedErase//是否擦除
CPoint m_ptEnd, m_ptStart
void CMyGraphicView::OnLButtonDown(UINT nFlags, CPoint point)
{
m_ptStart=point
CScrollView::OnLButtonDown(nFlags, point)
}
void CMyGraphicView::OnLButtonUp(UINT nFlags, CPoint point)
{
GetClientRect(&rect)//用来得到客户区域
CClientDC dc(this)
CPen pen
CPen *ptrOldPen
int nMode
CMyGraphicDoc *ptrDoc
ptrDoc=(CMyGraphicDoc *)GetDocument()//得到Doc类指针
pen.CreatePen(PS_DOT,1,RGB(0,0,0))//创建画笔
ptrOldPen=dc.SelectObject(&pen)
nMode=dc.SetROP2(R2_XORPEN)
dc.MoveTo(m_ptStart)
dc.LineTo(m_ptEnd)
dc.SetROP2(nMode)
dc.SelectObject(ptrOldPen)
pen.DeleteObject()
m_ptEnd=point
ptrDoc->AddLine(CRect(m_ptStart.x,m_ptStart.y,m_ptEnd.x,m_ptEnd.y))
m_bNeedErase=FALSE
InvalidateRect(rect,FALSE)//刷新客户区
CScrollView::OnLButtonUp(nFlags, point)
}
在OnMouseMove函数中添加如下代码:
if(nFlags&MK_LBUTTON)//如果左键按下且鼠标移动
{
nMode=dc.SetROP2(R2_XORPEN)
if(m_bNeedErase==TRUE)
{
dc.MoveTo(m_ptStart)
dc.LineTo(m_ptEnd)
}
else
{
m_bNeedErase=TRUE
}
m_ptEnd=point
dc.MoveTo(m_ptStart)
dc.LineTo(m_ptEnd)
dc.SetROP2(nMode)
dc.SelectObject(ptrOldPen)
}
m_ptEnd=point
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)