VC中绘图的函数有哪些

作者&投稿:宇肩 (若有异议请与网页底部的电邮联系)
VC++ MFC提供的绘图函数有哪些?这是一个简答题,就要函数有哪些~

1. 画像素点
画像素点就是设置像素点的颜色,从前面3)(2)已知道这可由CDC的成员函数SetPixel来做,该函数的原型为:
COLORREF SetPixel( int x, int y, COLORREF crColor ); 或
COLORREF SetPixel( POINT point, COLORREF crColor );
其中,x与y分别为像素点的横坐标与纵坐标,crColor为像素的颜色值。例如
pDC->SetPixel(i, j, RGB(r, g, b));

2.画线状图
在Windows中,线状图必须用笔来画(笔的创建与使用见前面的3)(3)),下面是CDC类中可以绘制线状图的常用成员函数:
当前位置:设置当前位置为(x, y)或point:(返回值为原当前位置的坐标)
CPoint MoveTo( int x, int y ); 或 CPoint MoveTo( POINT point);
画线:使用DC中的笔从当前位置画线到点(x, y)或point:(若成功返回非0值):
BOOL LineTo( int x, int y ); 或BOOL LineTo( POINT point );
画折线:使用DC中的笔,依次将点数组lpPoints中的nCount(≥2)个点连接起来,形成一条折线:
BOOL Polyline( LPPOINT lpPoints, int nCount );
画多边形:似画折线,但还会将最后的点与第一个点相连形成多边形,并用DC中的刷填充其内部区域:
BOOL Polygon( LPPOINT lpPoints, int nCount );
画矩形:使用DC中的笔画左上角为(x1, y1)、右下角为(x2,y2)或范围为*lpRect的矩形的边线,并用DC中的刷填充其内部区域:
BOOL Rectangle( int x1, int y1, int x2, int y2 ); 或
BOOL Rectangle( LPCRECT lpRect );
有时需要根据用户给定的两个任意点来重新构造左上角和右下角的点,例如:
rect = CRect(min(p0.x, point.x), min(p0.y, point.y), max(p0.x,point.x), max(p0.y, point.y));
画圆角矩形:使用DC中的笔画左上角为(x1, y1)、右下角为(x2,y2)或范围为*lpRect的矩形的边线,并用宽x3或point.x高y3或point.y矩形的内接椭圆倒角,再用DC中的刷填充其内部区域:
BOOL RoundRect( int x1, int y1, int x2, int y2, int x3, int y3);
BOOL RoundRect( LPCRECT lpRect, POINT point );
例如:
int d = min(rect.Width(), rect.Height()) / 4;
pDC-> RoundRect(rect, CPoint(d, d));
画(椭)圆:使用DC中的笔在左上角为(x1, y1)、右下角为(x2,y2)或范围为*lpRect的矩形中画内接(椭)圆的边线,并用DC中的刷填充其内部区域:
BOOL Ellipse( int x1, int y1, int x2, int y2 );
BOOL Ellipse( LPCRECT lpRect );
注意,CDC中没有画圆的专用函数。在这里,圆是作为椭圆的(宽高相等)特例来画的。
画弧:(x1, y1)与(x2, y2)或lpRect的含义同画(椭)圆,(x3, y3)或ptStart为弧的起点,(x4,y4)或ptEnd为弧的终点:(逆时针方向旋转)
BOOL Arc( int x1, int y1, int x2, int y2, int x3, int y3, intx4, int y4 );
BOOL Arc( LPCRECT lpRect, POINT ptStart, POINT ptEnd );
BOOL ArcTo(int x1, int y1, int x2, int y2, int x3, int y3, int x4,int y4);
BOOL ArcTo(LPCRECT lpRect, POINT ptStart, POINT ptEnd);
画圆弧:(其中(x, y)为圆心、nRadius为半径、fStartAngle为起始角、fSweepAngle为弧段跨角)
BOOL AngleArc(int x, int y, int nRadius, float fStartAngle, floatfSweepAngle);
画弓弦:参数的含义同上,只是用一根弦连接弧的起点和终点,形成一个弓形,并用DC中的刷填充其内部区域:
BOOL Chord( int x1, int y1, int x2, int y2, int x3, int y3, intx4, int y4 );
BOOL Chord( LPCRECT lpRect, POINT ptStart, POINT ptEnd );

3.画填充图
在Windows中,面状图必须用刷来填充(刷的创建与使用见前面的3)(4))。上面(2)中的Polygon、Rectangle、Ellipse和Chord等画闭合线状图的函数,只要DC中的刷不是空刷,都可以用来画对应的面状图(边线用当前笔画,内部用当前刷填充)。下面介绍的是CDC类中只能绘制面状图的其他常用成员函数:
画填充矩形:用指定的刷pBrush画一个以lpRect为区域的填充矩形,无边线,填充区域包括矩形的左边界和上边界,但不包括矩形的右边界和下边界:
void FillRect( LPCRECT lpRect, CBrush* pBrush );
画单色填充矩形:似FillRect,但只能填充单色,不能填充条纹和图案:
void FillSolidRect( LPCRECT lpRect, COLORREF clr );
void FillSolidRect( int x, int y, int cx, int cy, COLORREF clr);
画饼图(扇形):参数含义同Arc,但将起点和终点都与外接矩形的中心相连接,形成一个扇形区域,用DC中的刷填充整个扇形区域,无另外的边线:
BOOL Pie( int x1, int y1, int x2, int y2, int x3, int y3, intx4, int y4 );
BOOL Pie( LPCRECT lpRect, POINT ptStart, POINT ptEnd );
画拖动的矩形:先擦除线宽为sizeLast、填充刷为pBrushLast的原矩形lpRectLast,然后再以线宽为size、填充刷为pBrush画新矩形lpRectLast。矩形的边框用灰色的点虚线画,缺省的填充刷为空刷:
void DrawDragRect( LPCRECT lpRect, SIZE size, LPCRECTlpRectLast,
SIZE sizeLast, CBrush* pBrush = NULL, CBrush* pBrushLast = NULL);
如:pDC->DrawDragRect(rect, size, rect0, size);
填充区域:
用当前刷从点(x, y)开始向四周填充到颜色为crColor的边界:
BOOL FloodFill(int x, int y, COLORREF crColor); // 成功返回非0
用当前刷从点(x, y)开始向四周填充:
BOOL ExtFloodFill(int x, int y, COLORREF crColor,
UINT nFillType); // 成功返回非0
nFillType =FLOODFILLBORDER:填充到颜色为crColor的边界(同FloodFill);(用于填充内部颜色不同但边界颜色相同的区域)
nFillType =FLOODFILLSURFACE:填充所有颜色为crColor的点,直到碰到非crColor颜色的点为止。(点(x,y)的颜色也必须为crColor),(用于填充内部颜色相同但边界颜色可以不同的区域)。例如:
pDC->ExtFloodFill(point.x, point.y,pDC-> GetPixel_r(point), FLOODFILLSURFACE);

4.清屏
Windows没有提供专门的清屏函数,可以调用CWnd的下面两个函数调用来完成该功能:
void Invalidate(BOOL bErase = TRUE);
void UpdateWindow( );
或调用CWnd的函数
BOOL RedrawWindow(
LPCRECT lpRectUpdate =NULL,
CRgn* prgnUpdate =NULL,
UINT flags = RDW_INVALIDATE |RDW_UPDATENOW | RDW_ERASE
);
来完成。
例如(菜单项ID_CLEAR的事件处理函数):
CDrawView::OnClear() { // 调用OnDraw来清屏
//Invalidate();
//UpdateWindow( );
RedrawWindow( );
}
也可以用画填充背景色矩形的方法来清屏,如:
RECT rect;
GetClientRect_r(&rect);
pDC->FillSolidRect(&rect, RGB(255,255, 255));

要列出“所有的画图函数”,未免太多了吧,你还是在网上搜一些有关图形设备接口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)当鼠标左键按下时,需要将鼠标当前按下点保存起来,当鼠标弹起时,也需要将弹起点保存,因此为CMyGraphicView类添加一个CPoint类型的保护型变量m_ptStart和一个CPoint类型的保护变量m_ptEnd,并在View类构造函数中将其初始化为0。
protected:
UINT m_nDrawType;//保存用户选择的功能
CRect m_rectDraw;//鼠标按下到弹起构成的区域
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;

windows 绘图 API
AbortPath 抛弃选入指定设备场景中的所有路径。也取消目前正在进行的任何路径的创建工作
AngleArc 用一个连接弧画一条线
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 为指定的设备场景指定一个新的当前画笔位置
PaintDesktop 在指定的设备场景中描绘桌面墙纸图案
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、画笔

有两种形式创建画笔

一是直接通过GetStockObject()函数来调用

二是通过创建画笔来调用

HPEN CreatePen(
int fnPenStyle, // pen style
int nWidth, // pen width
COLORREF crColor // pen color
);

创建画笔后必须调用SelectObject函数来将起选入设备环境;

删除画笔可通过DeleteObject 函数来实现;

2、画刷

创建画刷

一是通过GetStockObject函数来调用

二是通过调用CreateSolidBrush 和CreateHatchBrush来创建画刷

HBRUSH CreateSolidBrush(
COLORREF crColor // brush color value
);HBRUSH CreateHatchBrush(
int fnStyle, // hatch style
COLORREF clrref // color value
);
3、颜色通过RGB函数来实现;4、常用的绘图函数设置画笔当前的位置函数MoveToExBOOL MoveToEx(
HDC hdc, // handle to device context
int X, // x-coordinate of new current position
int Y, // y-coordinate of new current position
LPPOINT lpPoint // pointer to old current position
);
从当前位置向指定坐标点画直线的函数LineToBOOL LineTo(
HDC hdc, // device context handle
int nXEnd, // x-coordinate of line's ending point
int nYEnd // y-coordinate of line's ending point
);
从当前位置开始,依次用线段连接lpPoints中指定各点的函数PolylineBOOL Polyline(
HDC hdc, // handle to device context
CONST POINT *lppt, // pointer to array containing endpoints
int cPoints // number of points in the array
);
椭圆弧线ArcBOOL Arc(
HDC hdc, // handle to device context
int nLeftRect, // x-coord of bounding rectangle's upper-left corner
int nTopRect, // y-coord of bounding rectangle's upper-left corner
int nRightRect, // x-coord of bounding rectangle's lower-right corner
int nBottomRect, // y-coord of bounding rectangle's lower-right corner
int nXStartArc, // first radial ending point
int nYStartArc, // first radial ending point
int nXEndArc, // second radial ending point
int nYEndArc // second radial ending point
);
画一个饼图并用当前的画刷进行填充PieBOOL Pie(
HDC hdc, // handle to device context
int nLeftRect, // x-coord of bounding rectangle's upper-left corner
int nTopRect, // y-coord of bounding rectangle's upper-left corner
int nRightRect, // x-coord of bounding rectangle's lower-right corner
int nBottomRect, // y-coord of bounding rectangle's lower-right corner
int nXRadial1, // x-coord of first radial's endpoint
int nYRadial1, // y-coord of first radial's endpoint
int nXRadial2, // x-coord of second radial's endpoint
int nYRadial2 // y-coord of second radial's endpoint
);
画一个矩形,并填充RectangleBOOL Rectangle(
HDC hdc, // handle to device context
int nLeftRect, // x-coord of bounding rectangle's upper-left corner
int nTopRect, // y-coord of bounding rectangle's upper-left corner
int nRightRect, // x-coord of bounding rectangle's lower-right corner
int nBottomRect // y-coord of bounding rectangle's lower-right corner
);
画一个椭圆并填充EllipseBOOL Ellipse(
HDC hdc, // handle to device context
int nLeftRect, // x-coord of bounding rectangle's upper-left corner
int nTopRect, // y-coord of bounding rectangle's upper-left corner
int nRightRect, // x-coord of bounding rectangle's lower-right corner
int nBottomRect // y-coord of bounding rectangle's lower-right corner
);
画一个多边形,并进行填充PolygonBOOL Polygon(
HDC hdc, // handle to device context
CONST POINT *lpPoints, // pointer to polygon's vertices
int nCount // count of polygon's vertices
);
InvalidateRect 函数的作用是刷新用户区,(使区域无效)


C语言中的图形函数有哪些
一) 像素函数 putpiel() 画像素点函数 getpixel()返回像素色函数 (二) 直线和线型函数 line() 画线函数 lineto() 画线函数 linerel() 相对画线函数 setlinestyle() 设置线型函数 getlinesettings() 获取线型设置函数 setwritemode() 设置画线模式函数 (三)、多边形函数 rectangle() 画矩形函数 bar...

C语言绘图用的Line函数,line(int x1,int y1,int x2,int y2),x1,Y1...
这是Turbo C中的函数,其坐标参数应该是double类型,也可以使用float或int类型,甚至char类型。

c语言中,批处理绘制(BeginBatchDraw(); EndBatchDraw();)是什么意思...
这个函数用于开始批量绘图。执行后,任何绘图操作都将暂时不输出到屏幕上,直到执行 FlushBatchDraw 或 EndBatchDraw 才将之前的绘图输出。以下代码实现一个圆从左向右移动,会有比较明显的闪烁。请取消 main 函数中的三个注释,以实现批绘图功能,可以消除闪烁。include <graphics.h> void main(){ initgra...

VC API编程时绘图函数Polygon()怎么用,括号里面填什么参数?越具体越 ...
VC里的Polygon是画多边形的函数,原型为:BOOL Polygon( LPPOINT lpPoints, int nCount )第一个参数是指定为多边形顶点的数组,数据类型为CPoint实例或是POINT结构型。第二个参数是多边形顶点的个数。假设是画5边形,则第一个lpPoints为5个POINT数组,nCount为5。给个例子,把用区域的每边中点作为...

c语言中如何用line函数连接三个点
在C语言中,我们可以使用line函数来连接三个点。line函数是用来绘制直线的函数,它需要两个点的坐标作为参数,然后会在这两个点之间绘制一条直线。连接三个点的过程可以分为两步:首先,我们需要确定连线的起点和终点;然后,我们调用line函数,将起点和终点的坐标作为参数传入,从而绘制出连接这三个点的...

GCC中的画图函数
ANSI C没有绘图函数,graphics是TC2独有的,并非标准函数。GCC中可以通过其它的API绘图,比如OpenGL

C语言常用的函数有哪些
C语言库函数,常用库函数有:1、scanf格式输入函数 2、printf格式输出函数 3、systemdos命令函数 4、sort排序 5、main主函数 6、fgets文件读取字符串函数 7、fputs文件写入字符串函数 8、fscanf文件格式读取函数 9、fprintf文件格式写入函数 10、fopen打开文件函数 11、getchar输入字符函数 12、putchar输出...

为什么在CDialog::OnInitDialog函数中绘图没效果呢?
在OnInitDialog函数中绘图起作用了,但是只在初始化时调用一次,而界面的绘制时在接收到WM_PAINT消息后执行的,所以之前在OnInitDialog的绘图就被覆盖了。所以要看见效果,就只能在OnPaint进行绘制。下面来说说OnPaint函数的作用 OnPaint()是CWnd的类成员,负责响应WM_PAINT消息。

在MFC中,OnPaint中调用OnDraw函数,这个过程被封装了,求剖析!
OnPaint是WM_PAINT消息的消息处理函数,在OnPaint中调用OnDraw,一般来说,用户自己的绘图代码应放在OnDraw中。OnPaint()是CWnd的类成员,负责响应WM_PAINT消息。OnDraw()是CVIEW的成员函数,没有响应消息的功能.当视图变得无效时(包括大小的改变,移动,被遮盖等等),Windows发送WM_PAINT消息。该视图...

C能像matlab一样画图吗??
同时对一些特殊的可视化要求,例如图形对话等,MATLAB也有相应的功能函数,保证了用户不同层次的要求。另外新版本的MATLAB还着重在图形用户界面(GUI)的制作上作了很大的改善,对这方面有特殊要求的用户也可以得到满足。简单地说,C是可以画图的,但是远远比matlab要复杂地多。因为matlab里有很多已经编好的...

定陶县15235143613: 请教VC画图函数 -
舒固丹香: AbortPath 抛弃选入指定设备场景中的所有路径.也取消目前正在进行的任何路径的创建工作 AngleArc 用一个连接弧画一条线 Arc 画一个圆弧 BeginPath 启动一个路径分支 CancelDC 取消另一个线程里的长时间绘图操作 Chord 画一个弦 ...

定陶县15235143613: VC有什么处理图形的函数?
舒固丹香: TC的图形库函数graphics.h可以添加到VC中使用

定陶县15235143613: vc++的图形函数是哪个 -
舒固丹香: VC中的基本图形函数 基本图形函数包括画点,线以及其它一些基本图形的函数 一、画点1. 画点函数 void far putpixel(int x, int y, int color); 该函数表示有指定的象元画一个按color 所确定颜色的点.对于颜色color的值可从表3中获得而对x, y是...

定陶县15235143613: VC API编程时绘图函数Polygon()怎么用,括号里面填什么参数?越具体越好,谢谢! -
舒固丹香: VC里的Polygon是画多边形的函数,原型为:BOOL Polygon( LPPOINT lpPoints, int nCount ) 第一个参数是指定为多边形顶点的数组,数据类型为CPoint实例或是POINT结构型.第二个参数是多边形顶点的个数.假设是画5边形,则第一个...

定陶县15235143613: vc中mfc全部绘图函数
舒固丹香: 全部? 那太多了建议你上网查下这几个类的成员函数如果有 msdn那就更方便了CDC CClientDC CPaint这几个类都提供画图的函数不过所有的图形说白了都是用点画的所以 最基本的SetPiexl你一定要了解哦 呵呵希望我的回答对你有所帮助

定陶县15235143613: vc中怎么画折线图? 用什么函数 -
舒固丹香: LineTo 画直线.Polyline和PolylineTo 画一系列相连的直线.PolyPolyline 画多组相连的线.Arc 画椭圆线.PolyBezier和PolyBezierTo 画贝塞尔曲线.另外,Windows NT还支持3种画线函数:ArcTo和AngleArc 画椭圆线.PolyDraw 画一系列相连的线以及贝塞尔曲线.

定陶县15235143613: 请问在visual c++环境下画点的函数是哪个? -
舒固丹香: 在vc中使用SetPixel()函数来画点,SetPixel函数说明:函数功能:该函数将指定坐标处的像素设为指定的颜色.COLORREF SetPixel(HDC hdc, int X, int Y, COLORREF crColor);参数 hdc 设备环境句柄.X 指定要设置的点的X轴坐标,按逻...

定陶县15235143613: 给一些基本的vc6和vc2005画图的函数,用于做小动画和小游戏
舒固丹香: 你应该到vc++去提问画点和线在第一章,我们谈论过Windows图形设备接口将图形输出设备的设备驱动程序与计算机连在一起的方式.在理论上,只要提供SetPixel和GetPixel函数,就可以使用图形设备驱动程序绘制一切东西了.其余的一切都...

定陶县15235143613: 用vc怎么实现画线、圆、矩形、抛物线? -
舒固丹香: 这需要用到图形编程的知识,虽然在VC中没有图形编程的头函数graphics.h,但是现在有人编写了那个头函数,同时在VC中可以用MFC 来作图.用graphics.h作图来实现上述功能代码如下(你可以到网上去找到那个头文件):画线:line(int x1,int...

定陶县15235143613: VC的绘图语句是啥
舒固丹香:就用二函数,moveto,lineto. vc可以用第三方控件:ntGraph,teeChart,很好用的.

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网