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;

}

方法/步骤 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等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

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

原文地址:https://54852.com/zz/10067174.html

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

发表评论

登录后才能评论

评论列表(0条)

    保存