2012-12-13 5 views
0

배터리를 사용하여 블루투스를 통해 휴대 전화에 연결된 기기 중 하나의 배터리 잔량을 표시하고 싶습니다.ios에서 배터리를 그리는 방법

어떻게하면됩니까? 내가 2D 도면과 총 멍청한 놈이야 .... 어떤 포인터가 도움이

덕분에,

+0

http://developer.apple.com/library/ios/#documentation/2DDrawing/Conceptual/DrawingPrintingiOS/GraphicsDrawingOverview/GraphicsDrawingOverview.html – hwaxxer

+5

"어떤 포인터가 도움이된다"- 여기 당신이'(무효 *) 0xdeadbeef' –

+1

png를 사용하여 배터리 개요를 그립니다. 그런 다음 크기를 조정하는 색상이 지정된 직사각형으로 겹쳐서 윤곽을 채 웁니다.(색칠 된 사각형은 backgroundColor를 설정 한 다음 UI의 테두리 또는 프레임을 조정하는 UIView 여야합니다. –

답변

3

나는 내 장치의 하나의 배터리 잔량을 표시하는 배터리를 그리는 싶습니다 블루투스를 통해 휴대 전화에 연결됩니다.

배터리와 같이 크기가 조정되지 않는 정적 이미지를 그리는 코드를 작성하는 것은 많은 문제가 될 것 같습니다. 물론 그렇게 할 수는 있지만 그리기 프로그램에 이미지를 그려서 응용 프로그램에 리소스로 추가하는 것이 훨씬 쉽습니다.

코드로 배터리를 그리려면 먼저 용지 또는 그림 프로그램에서 모양을 스케치하십시오. 그런 다음 필요한 모든 그리기 작업 목록을 작성하십시오. 배터리의 경우 일련의 선과 곡선 일뿐입니다. UIBezierPath은 이러한 작업을 제공하며, Quartz2D로 다이빙하는 것보다 시작하는 것이 더 쉽습니다.

+0

건전지 수준에 따라 건전지를 채우고 싶습니다 .... – pdiddy

+0

건전지의 내부를 투명하게 만든 다음 배터리 이미지를 색상이있는 직사각형 위에있는 마스크로 사용하십시오. 또는 이미지 위에 컬러 사각형을 그립니다. – Caleb

1

그리기 프로그램을 사용하여 프로그래밍하고 프로그래밍했습니다. 오늘은 프로그래밍이 쉽고 재미 있고 미래가 보장됩니다.
해상도가 변경 될 때마다 2 장 또는 몇 장의 사진을 제공하지 않아도됩니다.

도면의 tipp가 0과 1 사이의 도면을 표준화하려면 배터리 크기와 무관합니다. CGAffineTransformMakeScale()을 사용하면이를 달성 할 수 있습니다. 그런데 당신 immedealty 스케일 속도에 적응하기 위해 라인 폭 변경해야합니다 : 당신이 요소 R로 확장 할 경우

을 :
선폭이 origLineWidth/R 수있다; // 이것은 알아내는 데 어느 정도 시간이 걸렸습니다!
예를 들어, origLineWidth = 1.0;

그런 다음 당신은 그릴 수 (X에서 E, G. : 0 0.9) 배터리 코퍼스에 대한

  1. 한 사각형, 배터리 극에 대한
  2. 하나 개 채워진 사각형을. (예 : x : 0.9에서 1.0까지)
  3. 배터리의 충전 상태는 선형 그래디언트 (또는 2 단계 그래디언트)를 사용할 수 있습니다. 녹색에서 y를 0 (+ 선폭)에서 흰색에 대한 하나의 그라데이션 - 짙은 녹색 흰색에서 0.25 다른 : 예 : 0.25 - (1.0 - linewWidth)는

그게 정말 좋은 작품이다.

+0

'CGTranformationScale()'이 무슨 뜻인지 확실치 않습니다. 'CGAffineTransformMakeScale()'을 의미합니까? –

+0

네, 고맙습니다. 살아있는 컴파일러가 아닙니다 ;-) 나는 업데이트 할 것입니다. – AlexWien

+0

Funnier? 어쩌면 당신은 "더 재미있는"것을 의미할까요? Funnier -> "웃으면 서 더 웃게 만듭니다." – Caleb

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]; 
관련 문제