SqueakByExample:11.9

From 흡혈양파의 번역工房
Jump to navigation Jump to search
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.

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

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