SqueakByExample:11.9

From 흡혈양파의 번역工房
Revision as of 13:36, 17 August 2012 by Onionmixer (talk | contribs) (SBE 캔버스에관한좀더많은내용 페이지 추가)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigation Jump to search

캔버스(canvas)에 관한 좀 더 많은 내용

drawOn: 메소드는 단일 인수(sole argument)로서, 켄바스(Canvas)의 인스턴스를 갖고 있으며 켄바스(the canvas)는 키 그래픽 메소드(the key graphics)를 찾을 것입니다. 이러한 메소드들은 점(points), 라인(lines), 폴리곤(polygons), 직사각형(rectangles), 타원(ellipses), 텍스트(text), 그리고 회전(rotation)과 조정(scaling)을 준 이미지들입니다.

투명한 모프, more graphics 메소드, 안티얼라이징(antialiasing) 등을 얻기 위해 다른 종류의 켄버스들을 사용할 수 있습니다. 이 기능들을 사용하기 위해, 여러분은 AlphaBlendingCanvas 또는 BalloonCanvas가 필요합니다. 그러나 인수로서 FormCanvas의 인스턴스를 수신할 때, drawOn: 메소드에서 어떻게 이러한 켄바스(canvas)를 얻을 수 있을까요? 다행스럽게도, 여러분은 한 종류의 켄바스를 다른 종류의 켄바스로 변환할 수 있습니다.

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


메소드 11.37: 반투명한 주사위(die) 그리기

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]


이것이 여러분이 해야 할 모든 것입니다.

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


그림 11.9: 알파 투명도(alpha-transparency)로 디스플레이된 주사위


메소드 11.38: 안티얼라이싱 효과를 준 주사위를 그리기

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