2009-09-02 5 views
1

.NET Framework를 사용하여 'Balsamiq Mockups'또는 'yUML'으로 렌더링 된 것과 비슷한 스타일의 이미지를 만드는 코드를 작성하고 싶습니다..NET을 사용하여 손으로 그려진 효과 만들기

GDI +를 사용하여 손으로 그린 ​​연필 효과를 얻는 방법을 알려줄 수 있습니까?

분명히 올바른 글꼴을 사용하여 텍스트를 완성 할 수 있습니다. 제 질문은 선, 상자 및 원을 그리는 방법입니다.

감사합니다.

+0

"어떻게 크레용처럼 그리나요?"라는 질문을 보길 원할 것입니다. http://stackoverflow.com/questions/509310/how-do-you-draw-like-a-crayon – KingNestor

+0

@KingNestor : "사람에게 크레용을주고 하루 동안 그릴 것입니다. 크레용처럼 그리는 소프트웨어는 평생 버거 킹에서 일하게 될 것 "이라고 밝혔다. – MusiGenesis

+1

이 작업을 시작하기 전에 SketchFlow를 살펴 보겠습니다. WPF는 Windows 양식보다 더 나은 기술 일 수 있습니다. (대답 대신 여기에 내 의견을 남겨주세요) –

답변

4

GDI +는 직각 형 그래픽 그리기에 가장 적합하지만,이 같은 효과를 생성하는 데 사용할 수 있습니다 다음의 DrawBezier 방법을 사용하여 ...

alt text http://img7.imageshack.us/img7/3497/crudite.jpg

을 그래픽 객체. HighQuality에

Bitmap bmp = new Bitmap(pictureBox1.Width, pictureBox1.Height); 
using (Graphics g = Graphics.FromImage(bmp)) 
{ 
    g.FillRectangle(new SolidBrush(Color.White), 
     new Rectangle(0, 0, bmp.Width, bmp.Height)); 
    Pen pen = new Pen(Color.Gray, 7.0F); 
    g.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality; 

    g.DrawBezier(pen, 
     new Point(10, 10), 
     new Point(11, 41), 
     new Point(7, 147), 
     new Point(13, 199)); 

    g.DrawBezier(pen, 
     new Point(7, 10), 
     new Point(87, 13), 
     new Point(213, 17), 
     new Point(319, 6)); 

    g.DrawBezier(pen, 
     new Point(319, 4), 
     new Point(305, 53), 
     new Point(299, 107), 
     new Point(319, 203)); 

    g.DrawBezier(pen, 
     new Point(13, 199), 
     new Point(33, 195), 
     new Point(150, 207), 
     new Point(319, 203)); 

} 
pictureBox1.Image = bmp; 

이 효과에 키가 큰 폭 (본 예에서는 7.0F)가 펜을 사용하여, 그리고 그래픽의 SmoothingMode 설정되는 객체 (이후 : 여기서, 상기 이미지를 렌더링하는 코드이다 이것은 기본 SmoothingMode로 엉덩이처럼 보입니다).

일반 GDI + 방식으로 그리는 모양 (직사각형 및 좌표와 반지름 등)을 지정하는 사용자 지정 메서드를 작성하는 것이 상대적으로 쉽습니다. 그런 다음이 요소의 선을 베 지어 좌표로 변환합니다. 당신은 사물의 위치를 ​​각 방향의 몇 픽셀 씩 무작위로 약간 바꾼다.

+0

@MusiGenesis, SketchFlow가 WPF로 개발되었다는 것을 알았으니 나는 당신이 많이 거래하지 않을 것이라고 생각하지 않을 것입니다. –