C++应用程式中,画图程式 建立画笔的程式码 急~~

C++应用程式中,画图程式 建立画笔的程式码 急~~,第1张

C++应用程式中,画图程式 建立画笔的程式码 急~~

要想在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;

}

这是五边形的~~四边形的调用一函数就行了

#include <graphicsh>

main()

{

int drive,mode,i,j,m,n;

drive=DETECT;

initgraph(&drive,&mode,"");

i=getmaxx();

j=getmaxy();

m=i/2;

n=j/2;

cleardevice();

line(m,n-385,m-40,n-9);

line(m,n-385,m+40,n-9);

line(m-40,n-9,m-25,n+385);

line(m+40,n-9,m+25,n+385);

line(m-25,n+385,m+25,n+385);

getch();

closegraph();

}

依次点击开始-运行,在运行对话框中输入“Regedit”打开注册表编辑器。展开注册表到[HKEY_CLASSES_ROOT\Directory\shell],用鼠标右键单击Shell,在其下新建一个主键,将其命名为即将添加的程序名称“mspaint”;再双击右边窗口中的默认,输入菜单中要显示的命令名称,我们还可以在“&”的后面输入任意一个字母,以此作为启动这个命令的快捷键,在这里我们输入“画图(&M)”;接下来右键单击“mspaint”分支,在其下新建一个名为“Command”的子键分支,并双击右侧窗口中的“默认”,在d出的对话框中输入画图程序的详细路径。标准的画图程序路径在“C:\ProgramFiles\Accessories\MSPAINTEXE”。修改完成以后,刷新一下注册表,然后关闭,再鼠标右键文档,就可以看到菜单中已经有了画图(&M),单击即可打开“画图”程序。

另外可能有时候需要重启一下电脑。

matalab是我所知比较好的数学关系处理软件(当然简单一些的用excel就绰绰有余了),C语言软件中turbo-c显得就力不从心了,而且要进行比较复杂的编程语言转换,这个对于初学者太抽象了(命令式,可以类比于dos了··),如果你还是想借助c语言类软件的话,推荐用图形界面的软件,VB适于初学者,在之后可以选择学习VC(其中VC就已经足够强大了),另外要开发用于手机上的程式,就要学习java了··

(其他工具软件autoCAD也行,立体建模使用3d max 或者玛雅··)

以上仅供参考,希望对您有所帮助

在codeblocks中,可以通过集成EGE库,来实现C语言图形程序的编写,具体方式如下:

一、安装:

1、下载ege安装包;

2、将安装包解压;

3、把压缩包里include目录下所有文件,复制到编译器安装目录下的include目录内,例如D:\MinGW\include\;

4、把lib目录下对应编译器名目录下的文件,复制到编译器安装目录下的lib目录内,例如D:\MinGW\lib\。

二、建立工程:

只要第1步做好以后,其实已经安装好ege了,剩下的只是配置build option

点击file-new-projects,选择Console application:

注意编程语言要选C++(不必担心写代码仍可以是C语言,只是库要求源代码文件要是CPP)

三、配置build option:

建立好工程以后,需要设置好链接选项

1、点击project-build option:

2、切换到linker setting选项卡,添加-lgraphics -lgdi32 -limm32 -lmsimg32 -lole32 -loleaut32 -lwinmm -luuid -mwindows,这些链接选项。

3、点击Add,找到第一步编译器路径下的lib文件夹,添加libgraphicsa,libgdi32a libimm32a libmsimg32a libole32a liboleaut32a libwinmma libuuida这8个文件(可以一次性全部添加,不必一次添加一个),

并在右边的other linker options写上 -mwindows。

添加完以后应该是(前面的路径取决于编译器安装目录):

四、 测试代码:

到此已经设置完毕。

将工程里的maincpp文件的代码换成:

#include "graphicsh" 

int main(){ 

initgraph(640, 480); // 初始化为640480大小的窗口,这里和TC 略有区别 

circle(200, 200, 100); // 画圆,圆心(200, 200),半径100 

getch(); // 等待用户按键,按任意键继续 

closegraph(); // 关闭图形界面 

return 0;

}

构建,并运行,运行结果如下:

以上就是关于C++应用程式中,画图程式 建立画笔的程式码 急~~全部的内容,包括:C++应用程式中,画图程式 建立画笔的程式码 急~~、请用C语言编写一个图形显示程序。能够在屏幕中央画正四边形或正五边形。、如何在右键菜单新建中添加画图程序等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/9279480.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-26
下一篇 2023-04-26

发表评论

登录后才能评论

评论列表(0条)

保存