SqueakByExample:11.9: Difference between revisions

From 흡혈양파의 번역工房
Jump to navigation Jump to search
(SBE 캔버스에관한좀더많은내용 페이지 추가)
 
(번역수정)
 
(5 intermediate revisions by the same user not shown)
Line 1: Line 1:
==캔버스(canvas)에 관한 좀 많은 내용==
==캔버스에 대한 자세한 내용==


drawOn: 메소드는 단일 인수(sole argument)로서, 켄바스(Canvas)인스턴스를 갖고 있으며 켄바스(the canvas)는 키 그래픽 메소드(the key graphics)를 찾을 것입니다. 이러한 메소드들은 점(points), 라인(lines), 폴리곤(polygons), 직사각형(rectangles), 타원(ellipses), 텍스트(text), 그리고 회전(rotation)과 조정(scaling)을 준 이미지들입니다.  
drawOn: 메서드는 인자를 한가지만 취급하며, 이 인자로서 요구되는것은 Canvas 클래스의 인스턴스입니다; 여기서 Canvas 란 morph 자신을 draw 하는 영역을 의미합니다. Canvas 의 graphics 메서드를 사용하면, 사용자의 morph 에 자유로운 다양한 모양을 부여할 수 있습니다. Canvas 클래스의 계층구조를 살펴보면, 이런 변형된 클래스를 얼마든지 찾을 수 있습니다. 일반적으로 사용되는 Canvas 클래스의 변형은 FormCanvas 클래스입니다; Canvas 클래스와 FormCanvas 클래스에서 변형에 사용할 중요한 메서드중 대부분을 찾아낼 수 있습니다. 이러한 메서드에는 points, lines, polygons, rectangles, ellipses, text, 그리고 images 등의 그리기와, rotate, scaling 등이 있습니다.


투명한 모프, more graphics 메소드, 안티얼라이징(antialiasing) 등을 얻기 위해 다른 종류의 켄버스들을 사용할 수 있습니다. 이 기능들을 사용하기 위해, 여러분은 AlphaBlendingCanvas 또는 BalloonCanvas가 필요합니다. 그러나 인수로서 FormCanvas의 인스턴스를 수신할 때, drawOn: 메소드에서 어떻게 이러한 켄바스(canvas)를 얻을 수 있을까요? 다행스럽게도, 여러분은 한 종류의 켄바스를 다른 종류의 켄바스로 변환할 수 있습니다.
투명한 morph 또는, 그 외의 그리기 메서드, antialiasing 등을 사용하기 위해서, 다른 종류의 canvas 도 사용할 수 있습니다. 이런것들을 사용해보고 싶다면 AlphaBelndingCanvas 클래스나 BalloonCanvas 클래스등이 필요할겁니다. 하지만 drawOn: 메서드의 인수로서 FormCanvas 의 인스턴스를 받는경우, drawOn: 메서드의 안쪽에서는 어떤 처리를 해야할까요? 다행히도, 어느 canvas 라고해도 다른종류의 canvas 로 변환은 가능합니다.


{{CommentSqueak|{{Template:HighlightBold|DieMorph}} 에서 0.5 알파 투명도(alpha-transparency)로 캔버스(canvas)를 사용하기 위해, 다음과 같이 {{Template:HighlightBold|drawOn:}}을 재정의 합니다.}}


{{CommentSqueak|{{Template:HighlightBold|DieMorph}} 에서 0.5 값의 투명도<sup>alpha-transparency</sup>로 canvas 를 사용하려면, 다음과 같이 {{Template:HighlightBold|drawOn:}} 을 재정의 하시기 바랍니다.}}
메서드 11.37: 반투명한 주사위 그리기


메소드 11.37: 반투명한 주사위(die) 그리기
<syntaxhighlight lang="smalltalk">
<syntaxhighlight lang="smalltalk">
DieMorph»drawOn: aCanvas
DieMorph>>drawOn: aCanvas
   | theCanvas |
   | theCanvas |
   theCanvas := aCanvas asAlphaBlendingCanvas: 0.5.
   theCanvas := aCanvas asAlphaBlendingCanvas: 0.5.
Line 19: Line 21:




이것이 여러분이 해야 할 모든 것입니다.
알아야할건 전부 설명한듯 하군요.
 
[[image:multiMorphs.png|none|110px|thumb|그림 11.9: 알파 투명도로 표시한 주사위]]
 


만약 여러분이 의구심이 생긴다면 asAlphaBlendingCanvas: 메소드를 살펴보십시오. 여러분은 또한 메소드 11.38에서 보이는 것 처럼, BallonCanvas를 사용하고 주사위 그리기(die drawing) 메소드를 변환하여 안티얼라이징(antialiasing)을 얻을 수 있습니다.


만약 궁금증이 생긴다면, asAlphaBlendingCanvas: 메서드를 살펴보시기 바랍니다. 메서드 11.38 에서는, 주사위의 그리기 메서드에서 BallonCanvas 와 antialiasing 을 사용하는 방법을 알수 있습니다.


[[image:multiMorphs.png|none|110px|thumb|그림 11.9: 알파 투명도(alpha-transparency)로 디스플레이된 주사위]] 


메서드 11.38: AntiAliasing 효과를 준 주사위 그리기


메소드 11.38: 안티얼라이싱 효과를 준 주사위를 그리기
<syntaxhighlight lang="smalltalk">
<syntaxhighlight lang="smalltalk">
DieMorph»drawOn: aCanvas
DieMorph>>drawOn: aCanvas
   | theCanvas |
   | theCanvas |
   theCanvas := aCanvas asBalloonCanvas aaLevel: 3.
   theCanvas := aCanvas asBalloonCanvas aaLevel: 3.
Line 36: Line 40:
     do: [:aPoint | self drawDotOn: theCanvas at: aPoint]
     do: [:aPoint | self drawDotOn: theCanvas at: aPoint]


DieMorph»drawDotOn: aCanvas at: aPoint
DieMorph>>drawDotOn: aCanvas at: aPoint
   aCanvas
   aCanvas
     drawOval: (Rectangle
     drawOval: (Rectangle
Line 45: Line 49:
     borderColor: Color transparent
     borderColor: Color transparent
</syntaxhighlight>
</syntaxhighlight>


==Notes==
==Notes==

Latest revision as of 10:13, 16 September 2013

캔버스에 대한 더 자세한 내용

drawOn: 메서드는 인자를 한가지만 취급하며, 이 인자로서 요구되는것은 Canvas 클래스의 인스턴스입니다; 여기서 Canvas 란 morph 자신을 draw 하는 영역을 의미합니다. Canvas 의 graphics 메서드를 사용하면, 사용자의 morph 에 자유로운 다양한 모양을 부여할 수 있습니다. Canvas 클래스의 계층구조를 살펴보면, 이런 변형된 클래스를 얼마든지 찾을 수 있습니다. 일반적으로 사용되는 Canvas 클래스의 변형은 FormCanvas 클래스입니다; Canvas 클래스와 FormCanvas 클래스에서 변형에 사용할 중요한 메서드중 대부분을 찾아낼 수 있습니다. 이러한 메서드에는 points, lines, polygons, rectangles, ellipses, text, 그리고 images 등의 그리기와, rotate, scaling 등이 있습니다.

투명한 morph 또는, 그 외의 그리기 메서드, antialiasing 등을 사용하기 위해서, 다른 종류의 canvas 도 사용할 수 있습니다. 이런것들을 사용해보고 싶다면 AlphaBelndingCanvas 클래스나 BalloonCanvas 클래스등이 필요할겁니다. 하지만 drawOn: 메서드의 인수로서 FormCanvas 의 인스턴스를 받는경우, drawOn: 메서드의 안쪽에서는 어떤 처리를 해야할까요? 다행히도, 어느 canvas 라고해도 다른종류의 canvas 로 변환은 가능합니다.


Squeak comment.pngDieMorph 에서 0.5 값의 투명도alpha-transparency로 canvas 를 사용하려면, 다음과 같이 drawOn: 을 재정의 하시기 바랍니다.


메서드 11.37: 반투명한 주사위 그리기

DieMorph>>drawOn: aCanvas
  | theCanvas |
  theCanvas := aCanvas asAlphaBlendingCanvas: 0.5.
  super drawOn: theCanvas.
  (self perform: ('face' , dieValue asString) asSymbol)
    do: [:aPoint | self drawDotOn: theCanvas at: aPoint]


알아야할건 전부 설명한듯 하군요.

그림 11.9: 알파 투명도로 표시한 주사위


만약 궁금증이 생긴다면, asAlphaBlendingCanvas: 메서드를 살펴보시기 바랍니다. 메서드 11.38 에서는, 주사위의 그리기 메서드에서 BallonCanvas 와 antialiasing 을 사용하는 방법을 알수 있습니다.


메서드 11.38: AntiAliasing 효과를 준 주사위 그리기

DieMorph>>drawOn: aCanvas
  | theCanvas |
  theCanvas := aCanvas asBalloonCanvas aaLevel: 3.
  super drawOn: aCanvas.
  (self perform: ('face' , dieValue asString) asSymbol)
    do: [:aPoint | self drawDotOn: theCanvas at: aPoint]

DieMorph>>drawDotOn: aCanvas at: aPoint
  aCanvas
    drawOval: (Rectangle
      center: self position + (self extent * aPoint)
      extent: self extent / 6)
    color: Color black
    borderWidth: 0
    borderColor: Color transparent


Notes