如何以编程方式绘制三角形

Posted

技术标签:

【中文标题】如何以编程方式绘制三角形【英文标题】:How to draw a triangle programmatically 【发布时间】:2011-07-14 17:42:29 【问题描述】:

我有一个三角形求解器,我想要一种方法来使用我从答案中获得的值将一个三角形绘制到与之匹配的屏幕上。

【问题讨论】:

通过“三角形求解器”我想你的意思是你告诉它三角形的两侧并计算第三个?是直角三角形吗? 有点,我有办法让用户输入关于任何三角形的任何信息组合。如二边一角、三边、二角一角。还有所有的直角三角形。 【参考方案1】:

如果你继承一个 UIView,你可以在 drawRect 中实现类似的东西来绘制一个三角形:

-(void)drawRect:(CGRect)rect

    CGContextRef ctx = UIGraphicsGetCurrentContext();

    CGContextBeginPath(ctx);
    CGContextMoveToPoint   (ctx, CGRectGetMinX(rect), CGRectGetMinY(rect));  // top left
    CGContextAddLineToPoint(ctx, CGRectGetMaxX(rect), CGRectGetMidY(rect));  // mid right
    CGContextAddLineToPoint(ctx, CGRectGetMinX(rect), CGRectGetMaxY(rect));  // bottom left
    CGContextClosePath(ctx);

    CGContextSetRGBFillColor(ctx, 1, 1, 0, 1);
    CGContextFillPath(ctx);

【讨论】:

我仍然对如何做到这一点感到有些困惑。抱歉,我对编程还是很陌生。 创建一个Objective-C类,它是UIView的子类。在类中实现drawRect:方法,当需要在屏幕上绘制视图时,ios会调用drawRect:。实例化该类的对象并将其添加到视图控制器的视图中。如果这没有意义,那么也许您应该从this question 获得一些基础知识。 好的,我了解添加 Objective-c 类,但是当用户按下按钮将自定义三角形绘制到屏幕上时,我会调用什么? 您需要使用 addSubview 将三角形视图对象添加到视图控制器,类似于 [myViewcontroller.view addSubView:triangleView]; iOS 在正确的时间自动调用 drawRect。 我还做了一些非常有趣的事情来获得合适的比例。我将最长的三角形边除以宽度中点数的 %85,然后将其他边乘以该数字,以使任何三角形完美契合。【参考方案2】:

Swift 3 相当于progrmr 的答案:

override func draw(_ rect: CGRect) 

    guard let context = UIGraphicsGetCurrentContext() else  return 

    context.beginPath()
    context.move(to: CGPoint(x: rect.minX, y: rect.minY))
    context.addLine(to: CGPoint(x: rect.maxX, y: rect.midY))
    context.addLine(to: CGPoint(x: (rect.minX), y: rect.maxY))
    context.closePath()

    context.setFillColor(red: 1.0, green: 1.0, blue: 1.0, alpha: 1.0)
    context.fillPath()

【讨论】:

【参考方案3】:
- (void)drawRect:(CGRect)rect 


    CGContextRef ctx = UIGraphicsGetCurrentContext();
    CGContextClearRect(ctx, rect);

    // Draw a triangle
    CGContextSetRGBFillColor(ctx, 255, 160, 122, 1);

    CGContextBeginPath(ctx);
    CGContextMoveToPoint   (ctx, 290, 35);  // top
    CGContextAddLineToPoint(ctx, 350, 165);  // right
    CGContextAddLineToPoint(ctx, 230,165);  // left
    CGContextClosePath(ctx);

    CGContextSetRGBFillColor(ctx, 1, 1, 1, 1);
    CGContextFillPath(ctx);

【讨论】:

是)))@FelixSFD 这个答案如何为问题增加新的价值?看起来这只是程序员对硬编码值的回答。也只是纯代码,没有任何解释。 对不起,我是一个初学者,只是想展示我绘制三角形的方法。是的,这是我来自一个项目的代码。也许它会对其他人有所帮助......

以上是关于如何以编程方式绘制三角形的主要内容,如果未能解决你的问题,请参考以下文章

如何在 QTableView 单元格角落绘制三角形以显示可以从列表中选择的模型数据?

以编程方式创建形状视图并在集合视图单元格上使用

OpenGL绘制倒三角形

Scratch画图100例图45-scratch绘制多层旋转三角形 少儿编程 scratch编程画图案例教程 考级比赛画图集训案例

基于Qt的OpenGL可编程管线学习- 绘制一个三角形

scratch绘制多层旋转三角形 电子学会图形化编程scratch等级考试三级真题和答案解析2022年9月