画直线

方法一(推荐):使用CALayer

CALayer *middleBorder = [CALayer layer];
middleBorder.frame = CGRectMake(x, y, width, height);
middleBorder.backgroundColor = UIColor.CGColor;
[myView.layer addSublayer:middleBorder];

方法二:使用UIImageView(不便于更改)

 1 - (void)drawLineWithPoint:(CGPoint) startPoint toPoint:(CGPoint)toPoint
 2 {
 3         CGSize screenSize = [[UIScreen mainScreen] applicationFrame].size;
 4
 5         UIImageView *imageView = [[UIImageView alloc] initWithFrame:CGRectMake(0, 0, screenSize.width, screenSize.height)];
 6         //    UIImageView *imageView = [[UIImageView alloc] init];
 7         //    imageView.frame = self.contentView.frame;
 8         [self.contentView addSubview:imageView];
 9
10         UIGraphicsBeginImageContext(imageView.frame.size);
11         [imageView.image drawInRect:CGRectMake(0, 0, imageView.frame.size.width, imageView.frame.size.height)];
12
13         //获得处理的上下文
14         CGContextRef context = UIGraphicsGetCurrentContext();
15
16         //指定直线样式
17         CGContextSetLineCap(context, kCGLineCapSquare);
18
19         //直线宽度
20         CGContextSetLineWidth(context, 1.0);
21
22         //设置颜色
23         // red:166/255.0 green:177/255.0 blue:186/255.0
24         CGContextSetRGBStrokeColor(context, 246.0/255.0, 247.0/255.0, 247.0/255.0, 1.0);
25
26         //开始绘制
27         CGContextBeginPath(context);
28
29         //画笔移动到点(31,170)
30         CGContextMoveToPoint(context, startPoint.x, startPoint.y);
31
32         //下一点
33         CGContextAddLineToPoint(context, toPoint.x, toPoint.y);
34
35         //绘制完成
36         CGContextStrokePath(context);
37
38         imageView.image = UIGraphicsGetImageFromCurrentImageContext();
39         UIGraphicsEndImageContext();
40
41         //    NSLog(@"%f, %f", imageView.frame.size.width, imageView.frame.size.height);
42 }
时间: 2024-10-11 13:14:51

画直线的相关文章

Bresenham快速画直线算法

现在的计算机的图像的都是用像素表示的,无论是点.直线.圆或其他图形最终都会以点的形式显示.人们看到屏幕的直线只不过是模拟出来的,人眼不能分辨出来而已.那么计算机是如何画直线的呢,其实有比较多的算法,这里讲的是Bresenham的算法,是光栅化的画直线算法.直线光栅化是指用像素点来模拟直线,比如下图用蓝色的像素点来模拟红色的直线 给定两个点起点P1(x1, y1), P2(x2, y2),如何画它们直连的直线呢,即是如何得到上图所示的蓝色的点.假设直线的斜率0<k>0,直线在第一象限,Brese

Html5新特性 &lt;canvas&gt;画板画直线

 下面例子为用canvas标签画多条直线 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta ht

几种画直线的方法-孙鑫C++笔记

// HDC画直线 CPoint m_ptOrigin ; void CDrawView::OnLButtonDown(UINT nFlags, CPoint point) { m_ptOrigin = point; CView::OnLButtonDown(nFlags, point); } void CDrawView::OnLButtonUp(UINT nFlags, CPoint point) { HDC hdc; hdc = ::GetDC(m_hWnd); MoveToEx(hdc,

中点Bresenham算法光栅化画直线(个人总结精简版)代码超短!速度极快!

中点Bresenham算法光栅化画直线,每次只位移一个像素,精度高!此源码借助直线 y=x 做了一些转换,简化了主位移的处理,每次移动只需要 加减操作, 不需要乘除!速度极快!! 原理在最后,下面先贴上核心代码~ void Bresenham_LineTo(CDC *pDC, int x1, int y1, int x2, int y2) //中点Bresenham算法光栅化画直线 { float k = 1.0*(y2 - y1) / (x2 - x1); //斜率 int flag = 0;

ios画直线原理

画直线方法1: #pragma mark 画直线-比较简便的画法void drawLineEasy(){    CGContextRef ctx = UIGraphicsGetCurrentContext();    CGContextMoveToPoint(ctx, 0, 0);    CGContextAddLineToPoint(ctx, 100, 100);    CGContextStrokePath(ctx);} 画直线方法2: #pragma mark 画一条直线void draw

Html5新特性 &amp;lt;canvas&amp;gt;画板画直线

 以下样例为用canvas标签画多条直线 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta ht

用中点Bresenham画直线算法绘制任意斜率直线

使用VC 6.0 mfc实现编程 刚学的图像学,挺难学的,show 代码吧 void CLineView::OnDraw(CDC* pDC) { CLineDoc* pDoc = GetDocument(); ASSERT_VALID(pDoc); // TODO: add draw code for native data here int x1 ,x2 ,y1,y2 ; x1 = 0 ; y1 = 0 ;  x2 = 1000 ; y2 = 500 ; COLORREF c = RGB(25

canvas学习-----画直线

画布 1.添加canvas标签  可以通过CSS或者JS来设置canvs标签的width,height;Ps: <canvas id="cvs"></canvas> 2.Css设置canvs的width,height; #cvs { position: absolute; top: 10px; left: 10px; width: 355px; height: 647px; border: 2px dashed green; } 3.通过JS设置width,he

《图形学》实验五:改进的Bresenham算法画直线

开发环境: VC++6.0,OpenGL 实验内容: 使用改进的Bresenham算法画直线. 实验结果: 代码: 1 //中点Bresenham算法生成直线 2 #include <gl/glut.h> 3 #include <math.h> 4 5 #define WIDTH 500 //窗口宽度 6 #define HEIGHT 500 //窗口高度 7 #define DRAWLINE ProBresenham(100,100,400,400); //画直线 8 9 #pr

《图形学》实验四:中点Bresenham算法画直线

开发环境: VC++6.0,OpenGL 实验内容: 使用中点Bresenham算法画直线. 实验结果: 代码: 1 //中点Bresenham算法生成直线 2 #include <gl/glut.h> 3 #include <math.h> 4 5 #define WIDTH 500 //窗口宽度 6 #define HEIGHT 500 //窗口高度 7 #define DRAWLINE1 MidpointBresenham(100,200,200,100); //画直线 8