这是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像素等等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)