dev c++怎么在一个窗口画出直线和圆 程序已给出求调用方法

dev c++怎么在一个窗口画出直线和圆 程序已给出求调用方法,第1张

这是openGL的代码啊,而且main函数也给出来了,你要问的是什么?

直接粘到一个cpp里边就可以运行了啊?

或者是你本机没有安装openGL?

去openGL官网下一个sdk就行了。

在窗口过程中添加static静态变量   devcpp 例子wintest拿来改改而已

static POINT ptStart;/////

static POINT ptEnd;/////

static int clickcnt = 0;/////

switch (nMsg)

{

case WM_LBUTTONUP://///   添加LBUTTONUP消息处理分支

clickcnt++;/////

if((clickcnt & 0x00000001) == 0x00000001)////

{

//ptStartx = GET_X_LPARAM(lParam);///this macro need #include <windowsxh>

//ptStarty = GET_Y_LPARAM(lParam);///the same

ptStartx = lParam & 0x0000ffff;

ptStarty  = (lParam & 0xffff0000) >>16;

}

else

{

//ptEndx = GET_X_LPARAM(lParam);///

//ptEndy = GET_Y_LPARAM(lParam);///

ptEndx = lParam & 0x0000ffff;

ptEndy  = (lParam & 0xffff0000) >>16;

hdc = GetDC(hwnd);////

MoveToEx(hdc, ptStartx, ptStarty, NULL);////

LineTo(hdc, ptEndx, ptEndy);////

ReleaseDC(hwnd, hdc);////

}

break;

如果要设置线的颜色,宽度类型等就要新建一个画笔

CPen(线型,线宽,颜色)

你可以设置一个对话框,让用户将数据输入线型,线宽,颜色等数据,然后传入新的画笔当中,

颜色选取的话要用到

CColorDialog

类,调用GetColor(

)函数返回一个颜色

这个简单,用MoveTo 和LineTo就行了。如有下面2个点,x(1,2),y(8,9)

你只要MoveTo(1,2);

LineTo(8,9);

如果你是要任意输入2个点的话,那么先将输入的点先转化为浮点型,用atof函数,这个函数使用起来很简单,就是把字符型转化为浮点型。这样就好了。

版本 2

子程序 _按钮1_被单击

局部变量 i, 整数型

时钟1时钟周期 = 300

画板1清除 (, , , )

计次循环首 (到数值 (编辑框1内容), )

画板1画笔颜色 = 取颜色值 (取随机数 (1, 255), 取随机数 (1, 255), 取随机数 (1, 255))

画板1画直线 (取随机数 (1, 画板1宽度), 取随机数 (1, 画板1高度), 取随机数 (1, 画板1宽度), 取随机数 (1, 画板1高度))

计次循环尾 ()

子程序 _时钟1_周期事件

_按钮1_被单击 ()

首先你要会基本的cad编程啊 画线的代码 帮助里面都有了!

随便给你找一个

直线是 AutoCAD

中最基本的对象。用户可以创建各种直线—单一直线、带圆弧和不带圆弧的多线段。通常,可以通过指定坐标点来绘制直线。默认线型是

CONTINUOUS(即连续的线),但还有许多线型使用点和短划。

要创建直线,请使用以下方法之一:

AddLine

通过两点创建直线。

AddLightweightPolyline

从顶点列表创建二维优化多段线。

AddMLine

创建多线。

AddPolyline

创建二维或三维多段线。

标准直线和多线都是在世界坐标系的 XY 平面上创建的,而多段线与优化多段线则是在对象坐标系 (OCS) 中创建的。关于转换 OCS 坐标的信息,请参见转换坐标。

本例使用

AddLightweightPolyline 方法创建一条分为两段的简单多段线,其端点坐标值分别是 (2,4)、(4,2) 和 (6,4)。

Sub Ch4_AddLightWeightPolyline()

Dim plineObj As AcadLWPolyline

Dim points(0 To 5) As Double

' 定义二维多段线的点

points(0) = 2: points(1) = 4

points(2) = 4: points(3) = 2

points(4) = 6: points(5) = 4

' 在模型空间中创建一个优化多段线对象

Set plineObj = ThisDrawingModelSpace _

AddLightWeightPolyline(points)

ThisDrawingApplicationZoomAll

End Sub

上次刚写过,在VC下运行的,

int dx,dy,incrE,incrNE,d,x,y;

if ((point[1]x-point[0]x)==0){ //垂直的直线

x=point[0]x;

for(y=point[0]y;y<point[1]y;y++)

pDC->SetPixel(x,y,50);

}

else if(abs((point[1]y-point[0]y)/(point[1]x-point[0]x))<=1){ //斜率 -1到 1 之间

dx=point[1]x-point[0]x;

dy=point[0]y-point[1]y;

d=dx-2dy;

incrE=-2dy;

incrNE=2(dx-dy);

x=point[0]x,y=point[0]y;

pDC->SetPixel(x,y,50);

if(point[0]y>point[1]y){

while(x<point[1]x)

{

if(d>=0){

d+=incrE;

x++;

}

else

{d+=incrNE;

x++;

y--;

}

pDC->SetPixel(x,y,50);

}

}

else if(point[0]y<=point[1]y){

dy=point[1]y-point[0]y;

incrE=-2dy;

incrNE=2(dx-dy);

x=point[0]x,y=point[0]y;

pDC->SetPixel(x,y,50);

while(x<point[1]x)

{

if(d>=0){

d+=incrE;

x++;

}

else

{d+=incrNE;

x++;

y++;

}

pDC->SetPixel(x,y,50);

}

}

}

else { //斜率 <-1 和 >1的直线

if(point[1]x>=point[0]x){

dx=point[1]x-point[0]x;

dy=point[1]y-point[0]y;

d=2dx-dy;

incrE=2dx;

incrNE=2(dx-dy);

x=point[0]x,y=point[0]y;

pDC->SetPixel(x,y,50);

while(x<point[1]x)

{

if(d<0){

d+=incrE;

y++;

}

else

{d+=incrNE;

pDC->SetPixel(x,y,50);

x++;

y++;

}

pDC->SetPixel(x,y,50);

}

}

else if((point[1]y-point[0]y)/(point[1]x-point[0]x)<-1){

dx=point[1]x-point[0]x;

dy=point[0]y-point[1]y;

d=2dx-dy;

incrE=2dx;

incrNE=2(dx-dy);

x=point[0]x,y=point[0]y;

pDC->SetPixel(x,y,50);

while(y<point[1]y)

{

if(d>0){

d+=incrE;

y++;

}

else

{d+=incrNE;

x--;

y++;

}

pDC->SetPixel(x,y,50);

}

}

}

以上就是关于dev c++怎么在一个窗口画出直线和圆 程序已给出求调用方法全部的内容,包括:dev c++怎么在一个窗口画出直线和圆 程序已给出求调用方法、dev c++设计DDA画直线程序、C++ 编写一条画直线的程序,要求可以设置线的宽度如1像素,5像素等等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

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

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

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

发表评论

登录后才能评论

评论列表(0条)

保存