
要想在MFC中画出有颜色的线条,首先就要设定DC的画笔,我们可以按如下方法来设定画笔:
第一步:在View类中新增一个COLORREF型别的资料成员m_Color(用来储存画笔颜色值),在建构函式中对其初始化,
m_Color(RGB(255,0,0))
第二步:在WM_LBUTTONDOWN和WM_LBUTTONUP讯息的处理函式OnLButtonDown和OnLButtonUp中新增如下程式码:
void CdrView::OnLButtonDown(UINT nFlags, CPoint point)
{
TODO: Add your message handler code here and/or call default
m_StartPoint=point; 用来储存画线起始点的位置,即滑鼠左键第一次按下时的位置,型别为CPoint
CView::OnLButtonDown(nFlags, point);
}
void CdrView::OnLButtonUp(UINT nFlags, CPoint point)
{
TODO: Add your message handler code here and/or call default
第一种方法,用HDC绘图,使用API函式设定画笔颜色
/HDC hdc;
hdc=::GetDC(m_hWnd);
::SelectObject(hdc,CreatePen(PS_SOLID,1,m_Color)); 向装置上下文(装置描述表)中插入由CreatePen函式建立的画笔
::MoveToEx(hdc,m_StartPointx,m_StartPointy,NULL);
::LineTo(hdc,pointx,pointy);
::ReleaseDC(m_hWnd,hdc);/
第二种,用CDC类绘图,使用CPen类构造画笔
/CDC aDC;
CPen pen(PS_SOLID,1,m_Color); 建立一个画笔类物件,构造时设定画笔属性
aDCm_hDC=::GetDC(m_hWnd);
aDCSelectObject(&pen);
aDCMoveTo(m_StartPoint);
aDCLineTo(point);
::ReleaseDC(m_hWnd,aDCm_hDC);/
第三种,用CClient类绘图,使用CPen类构造画笔,跟第二种方法不同的是用CClientDC时不用手动去获取DC,和释放DC
CClientDC aDC(this); CClientDC的建构函式需要一个引数,这个引数是指向绘图视窗的指标,我们用this指标就可以了
CPen pen(PS_SOLID,1,m_Color); 建立一个画笔类物件,构造时设定画笔属性
aDCSelectObject(&pen);
aDCMoveTo(m_StartPoint);
aDCLineTo(point);
CView::OnLButtonUp(nFlags, point);
}
void CdrView::OnMouseMove(UINT nFlags, CPoint point)
{
TODO: Add your message handler code here and/or call default
CView::OnMouseMove(nFlags, point);
}
执行程式,就可以画出红色的线条来,如果想画其它颜色,只需要设定m_Color的值即可,例如,要设定成绿色,可以在View类的建构函式处把m_Color(RGB(255,0,0))改写成m_Color(RGB(0,255,0))。颜色的改变是通过设定RGB(0,255,0)中的三个引数来实现的。RGB中的三个引数分别对应三原色的红、绿、蓝,每一个引数的取值范围都是0~255,通过不同数值的组合,就可以画出各种各样的颜色来了。
visual c++ 2008 如何建立windows应用程式用windowsAPI函式写WinMain函式,用RegisterClass注册类,CreateWindow建立视窗,或者用MFC
VS10中 windows应用程式 MFC应用程式 对话方块应用程式什么区别 在vs10中怎么用c++建立对话方块应用程式 求助windows应用使用sdk类库 mfc用mfc类库
对话方块应用程式就是视窗的风格不同而已
新建专案 选择mfc应用程式 然后在专案属性中设定 基于对话方块
谁有C语言的画图应用程式#include<stdioh>
#include<graphicsh>
#include<mathh>
#include<dosh>
#include<biosh>
#include<ctypeh>
#include<processh>
#include<conioh>
#define COLOR WHITE
#define F1 59
#define F2 60
#define UP 72
#define DOWN 80
#define LEFT 75
#define RIGHT 77
#define HOME 71
#define END 79
#define PAGEUP 73
#define PAGEDOWN 81
int inc=1;
typedef union /返回键盘输入值/
{char c[2];
int i;
}KEY;
KEY key;
typedef struct /定义点/
{int x;
int y;
}DOT;
DOT dis,firstdot,secdot,dot1;
int point();
int do_that();
void mv_cp(int startx,int starty,int endx,int endy,int x,int y,int flag);/移动函式/
void fill(int startx,int starty,int endx,int endy);/填充/
void colour();/颜色/
void menu(void);/主选单/
void save(void);/储存/
void load(void);/开启档案/
void xhairs(int a,int b);/显示游标/
void arr_key(char c);
/--------------------------------主函式---------------------------------------/
void main()
{
int k,j,m,r,x1,y1,xn,yn;
int driver,mode;
disx=200;
disy=200;
driver=DETECT;
mode=VGAHI;
registerbgidriver(EGAVGA_driver);
registerbgifont(TRIPLEX_FONT);
initgraph(&driver,&mode,"f:\\tc201\\BGI");
setbkcolor(BLUE);
cleardevice();
setcolor(YELLOW);
xhairs(disx,disy);
while(keyc[0]!='q')
{
menu();/显示选单/
keyi=bioskey(0);
xhairs(disx,disy);
if(!keyc[0])
arr_key(keyc[1]);
else
switch(tolower(keyc[0]))
{
case 'f':
xhairs(disx,disy);colour();break;
case 'd':x1=y1=0;xhairs(disx,disy);setcolor(LIGHTRED);
outtextxy(10,22+(13)30,"b:begine point");
outtextxy(10,22+(14)30,"g:give up");
x1=point();
fill(6,410,149,430);
xhairs(disx,disy);
outtextxy(10,22+(13)30,"e:end point");
outtextxy(10,22+(14)30,"g:give up");
y1=point();
fill(6,410,149,460);
setcolor(COLOR);
if(x1&&y1)
{outtextxy(10,22+(13)30,"move the +");
outtextxy(10,22+(14)30,"y:do n:no");
}
x1=0;
xhairs(disx,disy);
x1=do_that();
if(x1)
{xn=disx;yn=disy;
mv_cp(firstdotx,firstdoty,secdotx,secdoty,xn,yn,0);
}
fill(6,410,149,460);break;
case 'l':x1=y1=0;/画直线/
xhairs(disx,disy);
setcolor(LIGHTRED);
outtextxy(10,22+(13)30,"b:begin point");
outtextxy(10,22+(14)30,"g:give up");
x1=point();
fill(6,410,149,430);
xhairs(disx,disy);
outtextxy(10,22+(13)30,"e:end point");
outtextxy(10,22+(14)30,"g:five up");
y1=point();
setcolor(COLOR);
if(x1&&y1)
line(firstdotx,firstdoty,secdotx,secdoty);
fill(6,410,155,460);
break;
case 'o':/画圆形/
x1=y1=0;
xhairs(disx,disy);
setcolor(LIGHTRED);
outtextxy(10,22+(13)30,"b:radius");
outtextxy(10,22+(14)30,"g:give up");
x1=point();
fill(6,410,149,430);
xhairs(disx,disy);
outtextxy(10,22+(13)30,"e:radius");
outtextxy(10,22+(14)30,"g:give up");
y1=point();
if(x1&&y1) setcolor(COLOR);
r=sqrt(fabs((secdotx-firstdotx)(secdotx-firstdotx)+(secdoty-firstdoty)(secdoty-firstdoty)));
if(x1&&y1) circle(firstdotx,firstdoty,r);
fill(6,410,149,460);break;
case 'h':/画矩形/
x1=y1=0;
xhairs(disx,disy);
setcolor(LIGHTRED);
outtextxy(10,22+(13)30,"b:left ");
outtextxy(10,22+(14)30,"g:give up");
x1=point();
fill(6,410,149,430);
xhairs(disx,disy);
outtextxy(10,22+(13)30,"e:right bottom");
outtextxy(10,22+(14)30,"g:give up");
y1=point();
if(x1&&y1)
{
setcolor(COLOR);
rectangle(firstdotx,firstdoty,secdotx,secdoty);
}
fill(6,410,155,460);break;
case 's':cleardevice();break;/清屏/
case 'w':save();break;
case 'r':load();break;
case 'm':x1=y1=0;/图形移动/
xhairs(disx,disy);
setcolor(LIGHTRED);
outtextxy(10,22+(13)30,"b:begin point");
outtextxy(10,22+(14)30,"g:give up");
x1=point();
fill(6,410,149,430);
xhairs(disx,disy);
outtextxy(10,22+(13)30,"e:end point");
outtextxy(10,22+(14)30,"g:give up");
y1=point();
fill(6,410,149,460);
setcolor(COLOR);
if(x1&&y1)
{
outtextxy(10,22+(13)30,"move the +");
outtextxy(10,22+(14)30,"y:do n:no");
}
x1=0;
xhairs(disx,disy);
x1=do_that();
if(x1)
{
xn=disx;yn=disy;
mv_cp(firstdotx,firstdoty,secdotx,secdoty,xn,yn,1);
}
fill(6,410,149,460);break;
}
xhairs(disx,disy);
}
closegraph();
}
/--------------------------------显示游标函式--------------------------------/
void xhairs(int a,int b)
{
int i;
for(i=a-3;i<=a+3;i++)
putpixel(i,b,15^getpixel(i,b));
for(i=b-3;i<=b+3;i++)
putpixel(a,i,15^getpixel(a,i));
}
/------------------------------选单函式------------------------------/
void menu(void)
{
#define STARTX 10
#define STARTY 22
#define DISTANCE 30
int i;
char menu_name[]={"F1:setp=1",
"F2:step=5",
"l:draw line",
"draw cirle",
"h:graw box",
"s:clear screen",
"m:move",
"d:copy",
"f:fill color",
"w:save",
"r:load",
"q:quit"};
setcolor(WHITE);
rectangle(5,5,150,470);
rectangle(5,403,150,470);
rectangle(155,5,635,470);
setcolor(LIGHTBLUE);
settextstyle(TRIPLEX_FONT,HORIZ_DIR,2);
outtextxy(36,STARTY,"menu");
settextstyle(DEFAULT_FONT,HORIZ_DIR,1);
for(i=0;i<12;i++)
outtextxy(STARTX,STARTY+(i+1)DISTANCE,menu_name[i]);
}
/---------------------------------储存函式---------------------------------/
void save(void)
{int i,j;
FILE fp;
if((fp=fopen("graphdat","w+"))==NULL)
{printf("cannot open this file!");
exit(0);
}
fill(260,473,400,480);
for(i=5;i<470;i++)
for(j=155;j<=635;j++)
fputc(getpixel(j,i),fp);
fclose(fp);
outtextxy(260,471,"save over!");
}
/-----------------------------------------开启函式------------------------/
void load(void)
{
int i,j;
FILE fp;
if((fp=fopen("graphdat","r+"))==NULL)
{
outtextxy(260,471,"cannot open this file!");
getch();
exit(0);
}
fill(260,471,400,480);
outtextxy(280,471,"loading");
for(i=5;i<=470;i++)
for(j=155;j<=635;j++)
putpixel(j,i,fgetc(fp));
fill(260,471,400,480);
fclose(fp);
outtextxy(280,471,"loading over");
}
/-----------------------------------------移动复制函式---------------------------/
void mv_cp(int startx,int starty,int endx,int endy,int x,int y,int flag)
{
int i,j;
unsigned char c;
if(startx>endx)
{i=startx;startx=endx;endx=i;}
if(starty>endy)
{i=starty;
starty=endy;endy=i;}
for(;startx<=endx;startx++,x++)
for(i=starty,j=y;i<=endy;i++,j++)
{c=getpixel(startx,i);
if(flag) putpixel(startx,i,BLUE);
putpixel(x,j,c);
}
}
/----------------------------返回点座标函式----------------------------------/
int point()
{int valid_p=0,g=1;
keyc[0]='';
while(keyc[0]!='p')
{keyi=bioskey(0);
xhairs(disx,disy);
if(!keyc[0])
arr_key(keyc[1]);
else
switch(tolower(keyc[0]))
{case 'b':putpixel(disx,disy,COLOR);
firstdotx=disx;
firstdoty=disy;
keyc[0]='p';
valid_p=1;
break;
case 'e':
putpixel(disx,disy,COLOR);
secdotx=disx;
secdoty=disy;
keyc[0]='p';
valid_p=2;break;
case 'g':
firstdotx=secdotx;
firstdoty=secdoty;
keyc[0]='p';
g=0;break;
}
xhairs(disx,disy);
if(valid_p==1||valid_p==2||g==0)
break;
}
xhairs(disx,disy);
return valid_p;
}
/------------------------------确认 *** 作------------------------/
int do_that()
{
int valid_p=0,g=1;
keyc[0]='';
while(keyc[0]!='p')
{keyi=bioskey(0);
xhairs(disx,disy);
if(!keyc[0])
arr_key(keyc[1]);
else
switch(tolower(keyc[0]))
{case 'y':
keyc[0]='p';
putpixel(disx,disy,COLOR);
valid_p=1;break;
case 'n':
keyc[0]='p';
firstdotx=secdotx;
firstdoty=secdoty;
g=0;break;}
xhairs(disx,disy);
if(valid_p==1||g==0)
break;
}
xhairs(disx,disy);
return valid_p;
}
/-----------------------------填充-------------------------------/
void fill(int startx,int starty,int endx,int endy)
{int i,j;
for(i=startx;i<=endx;i++)
for(j=starty;j<=endy;j++)
{putpixel(i,j,BLUE);
}
}
/-----------------------------------颜色定义--------------------------------/
void colour()
{
keyc[0]='';
setcolor(RED);
outtextxy(10,412,"R");
setcolor(GREEN);
outtextxy(40,412,"G");
setcolor(CYAN);
outtextxy(70,412,"C");
setcolor(LIGHTBLUE);
outtextxy(10,432,"L");
setcolor(MAGENTA);
outtextxy(40,432,"M");
setcolor(YELLOW);
outtextxy(70,432,"Y");
setcolor(WHITE);
outtextxy(10,452,"W");
setcolor(BROWN);
outtextxy(40,452,"N");
setcolor(LIGHTRED);
outtextxy(70,452,"D");
while(keyc[0]!='p')
{
keyi=bioskey(0);
xhairs(disx,disy);
if(!keyc[0])
arr_key(keyc[0]);
else
{switch(tolower(keyc[0]))
{case 'y' : setfillstyle(SOLID_FILL,YELLOW); break;
case 'r' : setfillstyle(SOLID_FILL,RED);break;
case 'g' : setfillstyle(SOLID_FILL,GREEN);break;
case 'c' : setfillstyle(SOLID_FILL,CYAN);break;
case 'l' : setfillstyle(SOLID_FILL,LIGHTBLUE);break;
case 'm' : setfillstyle(SOLID_FILL,MAGENTA);break;
case 'w' : setfillstyle(SOLID_FILL,WHITE);break;
case 'n' : setfillstyle(SOLID_FILL,BROWN);break;
case 'd' : setfillstyle(SOLID_FILL,LIGHTRED);break;
}
keyc[0]='p';}
/-------------------------游标---------------------/
xhairs(disx,disy);
}
xhairs(disx,disy);
floodfill(disx,disy,WHITE);
fill(6,410,149,460);
}
/-----------------------------游标控制----------------------------/
void arr_key(char c)
{switch(c)
{case LEFT : disx-=inc;break;
case RIGHT : disx+=inc;break;
case UP : disy-=inc;break;
case DOWN : disy+=inc;break;
case F1 : inc=1;break;
case F2 : inc=5;break;
}
}
如何在桌面上建立word应用程式和画图程式的快捷方式开始——所有程式——micsoft office——micsoft office word(右键此项,选择传送到——桌面快捷方式)
开始——所有程式——附件——画图板(右键此项,选择传送到——桌面快捷方式)
c++应用程式
通常安装程式预设不在桌面放置图示
故选择“开始”→“程式”→Microsoft Visual Studio 60→Microsoft Visual C++ 60,
执行Visual C++ 60。
将程式的开启方式选择为执行Visual C++ 60即可。
建立visual basic 60应用程式Private Sub Form_Load()
MsgBox "程式初始化"
End Sub
c++应用程式下的的原始码怎么找cpp和h档案就是原始码。
h是标头档案。
如何建立winform应用程式appconfig档案:
<xml version="10" encoding="utf-8" >
<configuration>
<configSections>
</configSections>
<connectionStrings>
<add name=自定义连线名
connectionString="SQL连线资料库字串"
providerName="SystemDataSqlClient" />
</connectionStrings>
</configuration>
呼叫。
从appconfig读取连线字串。
String connStr = ConfigurationManagerConnectionStrings["自定义连线名"]ConnectionString;
c++建立栈类程式程式码呵呵,交作业吧。如下,用了模板,程式码较长,但是各种 *** 作都有,可读性也比较好,是俺自己写的。有两个,链式和顺序的,我把顺序的发给你好了。
这个是标头档案, *** 作都定义在里面了
/
Sequel Stack
/
#include <asserth>
#include <iomaniph>
#include <stdlibh>
template <class Type> class Stack
{
public:
Stack( int size = 10 );
~Stack() { delete []elements; }
void Push( const Type &value );
Type Pop(void);
Type GetTop(void) const;
void MakeEmpty(void) { = -1; };
bool IsEmpty(void) const { return == -1; }
bool IsFull(void) const { return == maxSize - 1; }
void Traverse(void) const;
public:
int ;
Type elements;
int maxSize;
};
Implementation of member functions
template <class Type> Stack<Type>::Stack( int size )
{
if ( size < 1 )
{
cerr << "Illegal Stack Size" << endl;
exit(1);
}
maxSize = size;
= -1;
elements = new Type[maxSize];
assert( NULL != elements );
}
template <class Type> void Stack<Type>::Push( const Type &value )
{
assert( !IsFull() );
elements[++] = value;
}
template <class Type> Type Stack<Type>::Pop(void)
{
assert( !IsEmpty() );
return elements[--];
}
template <class Type> Type Stack<Type>::GetTop(void) const
{
assert( !IsEmpty() );
return elements[];
}
template <class Type> void Stack<Type>::Traverse(void) const
{
assert( !IsEmpty() );
for ( int i = 0; i <= ; i++ )
{
cout << elements[i] << endl;
}
return;
}
/
以下为主函式所在档案的程式码
#include <iostreamh>
#include "sequel stackh"
int main()
{
Stack<int> ob1(4);
ob1Push(0);
ob1Push(-1);
ob1Push(3);
ob1Push(5);
ob1Traverse();
cout << ob1Pop() << endl;
ob1Traverse();
return 0;
}
方法/步骤 1 在网上下载TeeChart控件并安装,安装自然不用多说,安装完后找到安装路径(带有TeeChart5ocx文件),复制当前路径 怎样在VS2013/MFC中使用TeeChart绘图控件 2 安装完后需要对控件进行简单的注册,打开cmd,通过cd指令并粘贴原来复
Public Class Form3
Protected Sub iniChart()
Dim dt As New DataTable
'表增加月份、收入、支出三列
dtColumnsAdd("月份")
dtColumnsAdd("收入")
dtColumnsAdd("支出")
Dim dr As DataRow
For i As Integer = 1 To 12
'新增行
dr = dtNewRow()
'月份 1-12月
drItem(0) = i & "月"
Randomize()
'收入
drItem(1) = 3000 + Int(5000 Rnd(8))
Randomize()
'支出
drItem(2) = 600 + Int(2000 Rnd(7))
dtRowsAdd(dr)
Next
dr = Nothing
With MeChart1
DataSource = dt 'dt作为chart1的数据源
SeriesClear()
LegendsClear()
ChartAreasClear()
ChartAreasAdd("收入")
ChartAreasAdd("支出")
LegendsAdd("收入")
LegendsAdd("支出")
SeriesAdd("收入")
SeriesAdd("支出")
Series("支出")ChartArea = "支出" '指定Series所属ChartArea
Series("支出")Legend = "支出" '指定Legend所属Series
Series("收入")LegendToolTip = "收入图例"
Series("收入")IsValueShownAsLabel = True '标签显示数据值
Legends("收入")DockedToChartArea = "收入" '指定Legend所属ChartArea
Legends("支出")DockedToChartArea = "支出"
ChartAreas("支出")Area3DStyleEnable3D = True '启用3D样式
End With
With (Chart1Series(0))
'指定x、y轴数据列
YValueMembers = "收入"
XValueMember = "月份"
'图表类型
ChartType = DataVisualizationChartingSeriesChartTypeColumn
End With
With Chart1Series(1)
YValueMembers = "支出"
XValueMember = "月份"
ChartType = DataVisualizationChartingSeriesChartTypePie
End With
MeChart1DataBind() '绑定数据源
With MeChart1Series("收入")
Dim s1 As Integer
For i As Integer = 0 To PointsCount - 1
s1 = s1 + Val(Points(i)GetValueByName("y"))
Points(i)ToolTip = Points(i)AxisLabel & Points(i)GetValueByName("y")
Next
'图例显示总收入
MeChart1Legends("收入")Title = "总收入"
LegendText = s1ToString
End With
With MeChart1Series("支出")
IsValueShownAsLabel = True
For i As Integer = 0 To PointsCount - 1
Points(i)ToolTip = Points(i)AxisLabel & Points(i)GetValueByName("y")
Points(i)LegendText = Points(i)AxisLabel
Points(i)Label = "#PERCENT" '饼状图显示百分比
SmartLabelStyleAllowOutsidePlotArea = True
Next
End With
MeChart1AlignDataPointsByAxisLabel("支出")
With MeChart1Legends("支出")
LegendStyle = DataVisualizationChartingLegendStyleColumn
Title = "支出"
End With
End Sub
Private Sub Form3_Load(ByVal sender As Object, ByVal e As SystemEventArgs) Handles MeLoad
Call iniChart()
Call iniCombChart()
End Sub
Private Sub iniCombChart()
Dim tps As Array
'枚举所有SeriesChartType类型
tps = SystemEnumGetValues(GetType(WindowsFormsDataVisualizationChartingSeriesChartType))
For Each i As WindowsFormsDataVisualizationChartingSeriesChartType In tps
MeComboBox1ItemsAdd(Val(i))
Next
End Sub
Private Sub Button1_Click(ByVal sender As SystemObject, ByVal e As SystemEventArgs) Handles Button1Click
Call iniChart()
End Sub
Private Sub ComboBox1_SelectedIndexChanged(ByVal sender As SystemObject, ByVal e As SystemEventArgs) Handles ComboBox1SelectedIndexChanged
With Chart1Series(0)
'改变图表样式
Dim tps As Array
tps = SystemEnumGetValues(GetType(SystemWindowsFormsDataVisualizationChartingSeriesChartType))
For Each i As WindowsFormsDataVisualizationChartingSeriesChartType In tps
If Val(i) = MeComboBox1Text Then
ChartType = i
Exit For
End If
Next
End With
End Sub
End Class
以上就是关于C++应用程式中,画图程式 建立画笔的程式码 急~~全部的内容,包括:C++应用程式中,画图程式 建立画笔的程式码 急~~、怎样在VS2013/MFC中使用TeeChart绘图控件、用VS2010怎么样能画出图表或者说如何能用Excel表格的画图功能 VB.net等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)