三角形填充

给定三角形的三个顶点,填充三角形,想来想去,竟然找不到这样的软件工具。就连matlab都没有提供这样的绘图功能。我有一组三角形的顶点坐标,想判断这些三角形是否可以完全拼合在一起。如果一个一个地去检查每个三角形的顶点坐标,那真不是人干的活。求人不如求已,干脆自己写一个windows程序吧,利用gdi来填充三角形。

(1)读取三角形顶点坐标

三角形的顶点坐标是如此保存在一个txt文件中的:

248 224 242 223 247 221
253 221 245 218 229 218
219 218 253 221 229 218

。。。

每行格式为:x0 y0 x1 y1 x2 y2,核心代码为:

FILE* txtFile;
txtFile=fopen(fileName,"rt");
int i=0;
while(fscanf(txtFile,"%d %d %d %d %d %d\n",&x0,&y0,&x1,&y1,&x2,&y2)!=EOF)
{
tris[i].x0 = x0;
tris[i].y0 = y0;
tris[i].x1 = x1;
tris[i].y1 = y1;
tris[i].x2 = x2;
tris[i].y2 = y2;
i++;
}

(2)填充三角形的函数

CClientDC dc(this);
CPoint p1(x0,y0), p2(x1,y1), p3(x2,y2);
CPoint points[]={p1,p2,p3,p1};

CRgn rgn;
rgn.CreatePolygonRgn(points,3,ALTERNATE/*WINDING*/);//创建区域
CBrush brush;
brush.CreateSolidBrush(rgb);//创建画刷

dc.FillRgn(&rgn,&brush);//填充区域

brush.DeleteObject();
rgn.DeleteObject();

(3)绘制所有三角形

在OnDraw()函数中调用以下代码就可以绘制出所有的三角形了。

for(int i=0;i<trisCnt;i++)
{
FillPoly3f(tris[i].x0, tris[i].y0,
tris[i].x1, tris[i].y1,
tris[i].x2, tris[i].y2, 0xFFFFFF);
}



  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要给三角形填充颜色,可以使用Java Graphics2D类中的fill方法。具体步骤如下: 1. 创建一个Graphics2D对象,并将其绘制到画布上。 2. 创建一个三角形的路径,可以使用Java AWT库中的Polygon类来创建一个三角形路径。 3. 使用Graphics2D对象的setColor方法设置填充颜色。 4. 使用Graphics2D对象的fill方法填充三角形路径。 下面是一个简单的Java代码示例,用于演示如何给三角形填充颜色: ```java import java.awt.*; import javax.swing.*; public class TriangleFillDemo extends JPanel { public void paint(Graphics g) { super.paint(g); Graphics2D g2d = (Graphics2D)g; // 创建一个三角形路径 Polygon triangle = new Polygon(); triangle.addPoint(100, 100); triangle.addPoint(150, 50); triangle.addPoint(200, 100); // 设置填充颜色 g2d.setColor(Color.RED); // 填充三角形路径 g2d.fill(triangle); } public static void main(String[] args) { JFrame frame = new JFrame("Triangle Fill Demo"); frame.add(new TriangleFillDemo()); frame.setSize(300, 200); frame.setLocationRelativeTo(null); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setVisible(true); } } ``` 在上面的代码中,我们创建了一个TriangleFillDemo类,它是一个继承自JPanel的自定义面板。在paint方法中,我们创建了一个Graphics2D对象,并将其转换为Graphics对象。然后,我们创建了一个三角形路径,并使用setColor方法设置填充颜色为红色。最后,我们使用fill方法填充三角形路径。在main方法中,我们创建了一个JFrame对象,并将TriangleFillDemo面板添加到其中。运行程序后,就可以看到一个填充了红色的三角形
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值