中易网

怎么用vc6.0画图

答案:3  悬赏:80  
解决时间 2021-03-06 10:21
怎么用vc6.0画图
最佳答案
声明在:Wingdi.h; Windows.h 你学的TC和VC事不一样的,要画图的话要用到DC的,而DC要用到窗口的
全部回答
实现一个简单绘图。
#include <graphics.h>
#include <conio.h>
void main() {initgraph(640, 480);
line(200, 240, 440, 240);
line(320, 120, 320, 360);
getch();
closegraph();
说明:
1. 创建的绘图屏幕640x480,表示横向有640个点,纵向有480个点。注意:左上角是原点(0,0),也就是说,y轴和数学的y轴是相反的。
2. getch实现按任意键功能,按任意键后,程序继续执行。否则,程序会立刻执行closegraph以至于看不到绘制的内容。
一、画一个红色边框的矩形
1、创建一个MFC实例,选择基于对话框,其他默认。
2、在CTestDlg3Dlg类中找到,OnPaint()函数。
3、在else后面添加如下语句,注意加在CDialog::OnPaint();后面。
CClientDC dc( this ); //取设备
CPen pen; // 定义画笔
pen.CreatePen( PS_SOLID,10,RGB(255,0,0) ); //创建画笔类型
dc.SelectObject ( pen ); //设备上选择画笔对象
dc.MoveTo( 0,0 );
dc.LineTo( 100,0 );
dc.LineTo( 200,200 );
dc.LineTo( 200,200 );
二、画一个带三维效果的矩形框
1、创建一个CMyButton类
结果如下:
申明部分(MyButton.h):
class CMyButton
{
public:
int x0,y0; //起始点坐标
int w,h; //矩形的宽度和高度
int thick; //三维效果厚度
COLORREF clr; //填充色彩
void draw( CClientDC* ); //绘制函数
CMyButton();
CMyButton(int,int,int,int); //构造函数
virtual ~CMyButton();
};
定义部分(Mybutton.cpp):
// MyButton.cpp: implementation of the CMyButton class.
//
//////////////////////////////////////////////////////////////////////
#include "stdafx.h"
#include "testDlg3.h"
#include "MyButton.h"
#ifdef _DEBUG
#undef THIS_FILE
static char THIS_FILE[]=__FILE__;
#define new DEBUG_NEW
#endif
//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////
CMyButton::CMyButton()
{
}
CMyButton::CMyButton(int x1,int y1,int w1,int h1)
{
x0 = x1;
y0 = y1;
w = w1;
h = h1;
}
CMyButton::~CMyButton()
{
}
void CMyButton::draw( CClientDC *dc)
{
CRect rect(x0,y0,w+x0,h+y0); // 创建矩形对象
CBrush brush; // 创建画刷对象
brush.CreateSolidBrush( clr );
dc->FillRect( &rect, &brush);
CPen lightPen;
lightPen.CreatePen( PS_SOLID,thick,RGB(200,255,200) );
dc->SelectObject( lightPen );
dc->MoveTo( x0+w,y0 );
dc->LineTo( x0,y0 );
dc->LineTo( x0,y0+h);
CPen darkPen;
darkPen.CreatePen( PS_SOLID,thick,RGB(10,20,20) );
dc->SelectObject( darkPen );
dc->MoveTo( x0,y0+h );
dc->LineTo( x0+w,y0+h );
dc->LineTo( x0+w,y0);
}
2、类的调用方式:
同样是在CTestDlg3Dlg类中找到,OnPaint()函数。
在else后面添加如下语句。
CDialog::OnPaint();
CClientDC dc( this );
CMyButton btn(50,50,100,50);
btn.clr = RGB(155,200,155);
btn.thick=3;
btn.draw( &dc );
三、在VC6.0中使用GDI+双缓冲高效绘图
GDI+的特色为:渐变画刷,独立路径对象,矩阵对象,Alpha Blending,多格式图片支持等等。
Graphics g(pDC->m_hDC);//创建Graphics对象。
Bitmap CacheImage(rect.Width(),rect.Height()); //依窗口大小创建内存画布。
Graphics buffer(&CacheImage);//Gaphics对象引用内存画布。
buffer.Clear(Color::White);//清除内存画布并以白色填充,当然也可以是其它颜色。
Pen pen(Color::Red,1);//创建画笔。
buffer.DrawLine(&pen,0,0,100,300);//在内存画布中绘画。
g.DrawImage(&CacheImage, 0, 0);//将内存画布贴到屏幕。绘画结束。
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
腾讯大王卡的日租宝可以取消吗
登峰造极近义词
赛热开勒迪再库在哪里啊,我有事要去这个地方
在线看电影时出现双声怎么关掉其中一个声道
求夺宝奇兵系列电影百度云
长城广告有限公司怎么去啊,有知道地址的么
联通电信垄断
用三个成语来形容鲁达
开啦永久的QQ会员怎么取消
小米2s手机的内置存储卡在手机中无法读出
问道100级后应去哪里升级啊????
输尿管结石0.5大小的必须做激光碎石吗
鑫牌厨柜·衣柜地址有知道的么?有点事想过去
未来航天计划(各国的)
电信手机什么情况下发图片收费是1毛
推荐资讯
红旗欣居A区南门地址在什么地方,想过去办事
PLC已经落后了?
海南省红十字会志愿者培训基地地址有知道的么
奇瑞汽车车门没关好的标志在那里看
沈阳市铁西区学校
没有国药准字。只有专利证明的药能出售吗
一个男人喜怒不形于色是怎么样的人?可靠吗?
武汉恒信奥诚汽车销售服务有限公司地址有知道
Acer 宏碁E15 E5-575G 测评 宏碁笔记本怎么样
零线发热的原因
菏泽市区有教韩语的地方吗?
泰拳是否适合街头格斗?!
手机登qq时,显示手机磁盘不足,清理后重新登
刺客的套装怎么选啊?