我想画一个电池来显示我的一个设备通过蓝牙连接到手机的电池电量。
我怎样才能做到这一点?我是2d绘图的总菜鸟....任何指针都很有帮助
谢谢,
答案 0 :(得分:3)
我想画一个电池来显示我的一个电池电量 通过蓝牙连接到手机的设备。
编写代码来绘制像电池一样的非缩放静态图像似乎很麻烦。当然,你可以做到这一点,但是在绘图程序中绘制图像并将其作为资源添加到应用程序中要容易得多。
如果要在代码中绘制电池,请先在纸上或绘图程序中绘制形状。然后写下你需要做的所有绘图操作的列表 - 对于电池,它可能只是一系列线条和曲线。 UIBezierPath提供了这些操作,并且可能比开始使用Quartz2D更容易。
答案 1 :(得分:1)
我已经使用绘图程序完成了两项工作并进行了编程。今天我发现编程更简单,更有趣,更具未来性: 您无需为ios分辨率的任何变化提供两张或多张图片。
绘图中的(不是那么秘密)tipp是为了将绘图在0和1之间标准化。然后你独立于电池尺寸。
您可以使用CGAffineTransformMakeScale()
实现这一目标。
但是你应该改变线宽以适应比例率:
如果按因子r缩放:
lineWidth必须是origLineWidth / r; //这花了我一些时间才发现!
其中例如origLineWidth = 1.0;
然后你可以画:
这是一项非常好的工作。
答案 2 :(得分:0)
这是我在PaintCode中绘制的一个小东西,可能有点小。
CGFloat factor = 0.2; // Something between 0.0 - 1.0
//// Rectangle Drawing
UIBezierPath* rectanglePath = [UIBezierPath bezierPathWithRect: CGRectMake(0.5, 0.5, 15, 5)];
[[UIColor blackColor] setStroke];
rectanglePath.lineWidth = 1;
[rectanglePath stroke];
//// Rectangle 2 Drawing -- THIS IS THE INNER "LEVEL" PART
UIBezierPath* rectangle2Path = [UIBezierPath bezierPathWithRect: CGRectMake(2, 2, 12*factor, 2)];
[[UIColor blackColor] setFill];
[rectangle2Path fill];
[[UIColor blackColor] setStroke];
rectangle2Path.lineWidth = 1;
[rectangle2Path stroke];
//// Bezier Drawing
UIBezierPath* bezierPath = [UIBezierPath bezierPath];
[bezierPath moveToPoint: CGPointMake(15.52, 1.5)];
[bezierPath addCurveToPoint: CGPointMake(17.04, 2.97) controlPoint1: CGPointMake(16.64, 1.49) controlPoint2: CGPointMake(17.05, 1.76)];
[bezierPath addCurveToPoint: CGPointMake(15.52, 4.5) controlPoint1: CGPointMake(17.02, 4.16) controlPoint2: CGPointMake(17.05, 4.48)];
[bezierPath addCurveToPoint: CGPointMake(15.52, 1.5) controlPoint1: CGPointMake(15.55, 4.48) controlPoint2: CGPointMake(15.47, 1.49)];
[bezierPath closePath];
[[UIColor blackColor] setFill];
[bezierPath fill];