自定义划线方法

#import "DrawLine.h"



@implementation DrawLine


+ (void)drawCenter:(UIImageView *)imageView withBeginX:(CGFloat)Bx withBeginY:(CGFloat)By withEndX:(CGFloat)Ex withEndY:(CGFloat)Ey withLineWidth:(CGFloat)width withColorR:(CGFloat)r G:(CGFloat)g B:(CGFloat)b Alpha:(CGFloat)a

{

    

    UIGraphicsBeginImageContext(imageView.frame.size);

    [imageView.image drawInRect:CGRectMake(0, 0, imageView.frame.size.width, imageView.frame.size.height)];

    

    

    CGContextSetLineCap(UIGraphicsGetCurrentContext(), kCGLineCapRound);

    CGContextSetLineWidth(UIGraphicsGetCurrentContext(), width);  //线宽

    CGContextSetAllowsAntialiasing(UIGraphicsGetCurrentContext(), YES);

    CGContextSetRGBStrokeColor(UIGraphicsGetCurrentContext(), r, g, b, a);  //颜色

    CGContextBeginPath(UIGraphicsGetCurrentContext());

    CGContextMoveToPoint(UIGraphicsGetCurrentContext(), Bx, By);  //起点坐标

    CGContextAddLineToPoint(UIGraphicsGetCurrentContext(), Ex, Ey);   //终点坐标

    CGContextStrokePath(UIGraphicsGetCurrentContext());

    imageView.image = UIGraphicsGetImageFromCurrentImageContext();

    UIGraphicsEndImageContext();

    

}


+ (void)drawLineCenter:(UIView *)view withBeginX:(CGFloat)Bx withBeginY:(CGFloat)By withEndX:(CGFloat)Ex withEndY:(CGFloat)Ey withLineWidth:(CGFloat)width withColorR:(CGFloat)r G:(CGFloat)g B:(CGFloat)b Alpha:(CGFloat)a

{

    UIImageView *imageView=[[UIImageView alloc] initWithFrame:view.frame];

    imageView.frame = CGRectMake(view.frame.origin.x, view.frame.origin.y, 500, view.frame.size.height);

    

    [view addSubview:imageView];

    view.backgroundColor = [UIColor clearColor];

    

    

    UIGraphicsBeginImageContext(imageView.frame.size);

    [imageView.image drawInRect:CGRectMake(0, 0, imageView.frame.size.width, imageView.frame.size.height)];

    

    

    CGContextSetLineCap(UIGraphicsGetCurrentContext(), kCGLineCapRound);

    CGContextSetLineWidth(UIGraphicsGetCurrentContext(), width);  //线宽

    CGContextSetAllowsAntialiasing(UIGraphicsGetCurrentContext(), YES);

    CGContextSetRGBStrokeColor(UIGraphicsGetCurrentContext(), r, g, b, a);  //颜色

    CGContextBeginPath(UIGraphicsGetCurrentContext());

    CGContextMoveToPoint(UIGraphicsGetCurrentContext(), Bx, By);  //起点坐标

    CGContextAddLineToPoint(UIGraphicsGetCurrentContext(), Ex, Ey);   //终点坐标

    CGContextStrokePath(UIGraphicsGetCurrentContext());

    imageView.image = UIGraphicsGetImageFromCurrentImageContext();

    UIGraphicsEndImageContext();

    

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Unity UI 上划线可以通过以下几种方法实现: 1. 使用Image组件:创建一个Image对象,并且设置其Source为“Horizontal”或“Vertical”,然后将其尺寸调整为想要的大小和位置。接着,在相应的位置上划线,可以使用Image的Rect Transform来确定划线的位置和尺寸。 2. 使用LineRenderer组件:将LineRenderer组件添加到Canvas上的GameObject上,并且通过设置起点和终点的位置来绘制一条直线。可以通过设置材质和宽度来改变线条的样式。 3. 使用RectTransform和RectTransformUtility:可以通过手动计算顶点的坐标来创建一个矩形,在矩形的上方或下方绘制一条直线。使用RectTransformUtility将世界坐标转换为Canvas内的坐标以确保正确的位置。 无论选择哪种方法,都可以根据需要来调整线条的位置、宽度、颜色和样式。可以在代码中或者在编辑器中对线条进行动态修改,使其适应不同的场景和交互需求。 需要注意的是,在Unity UI中绘制的线条属于UI元素,而不是真正的3D物体。因此,在使用线条时要确保Canvas组件的Render Mode设置为Screen Space-Overlay或Screen Space-Camera,以确保线条能正确显示在屏幕上。 ### 回答2: Unity UI的上划线通常是用于强调某个文本或元素的效果。您可以通过以下步骤在Unity中实现在UI元素上添加划线的效果: 1. 创建UI元素:首先,您需要在场景中创建一个UI元素,可以是Text、Image或任何其他类型的UI元素。 2. 添加Canvas:确保在场景中已经添加了一个Canvas对象,以便在上面显示UI元素。 3. 创建UI线条:在Canvas上创建一个UI Image元素,并根据您的需要设置它的位置、大小和颜色。这将作为你的划线。 4. 调整划线位置:将UI Image元素的位置调整到与您要划线的文本或元素对齐。您可以使用锚点和偏移来进行微调。 5. 设置划线效果:将UI Image的Sprite设置为一条直线的纹理,这可以是一张图片或者Unity提供的自带纹理。您还可以调整划线的粗细和颜色。 6. 划线的显示和隐藏:根据需要,在代码中控制划线的显示和隐藏。您可以在需要显示划线的位置将UI Image元素设置为active,而在不需要时设置为inactive。 通过这些步骤,您可以在Unity UI中实现上划线的效果。根据您的需求,您可以进一步进行自定义和调整,以使划线的样式和效果符合您的设计要求。 ### 回答3: Unity UI 上划线是一种常见的UI设计元素,用于在界面上突出显示或强调某些内容。在Unity中,可以通过以下几种方法来实现UI上的划线效果。 1. 使用Image组件:可以在Unity UI中创建一个Image组件,然后将其设置为水平或垂直的线条,并调整其长度和厚度,来实现划线效果。可以使用颜色属性来设置线条的颜色,也可以使用Sprite属性来选择使用自定义的线条图像。 2. 使用UI Line Renderer:这是Unity中的一个内置组件,用于在UI元素上绘制线条。可以通过创建一个UI Line Renderer组件并调整其属性,如点数、线宽和颜色,来绘制直线或曲线。 3. 使用Shader:可以编写一个自定义的Shader来实现UI上的划线效果。可以在Shader中编写顶点和片段着色器,通过计算每个像素的颜色值,以实现所需的划线效果。然后,在UI元素的材质中应用该Shader。 以上是几种常见的方法,用于在Unity UI上实现划线效果。根据具体需求,可以根据UI元素的设计和功能要求选择适当的方法
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值