RMagick으로 기울어진 문자를 그리는 방법

9300 단어 RMagickRuby

이 보도에 관하여


RMagick을 사용하여 기울어진 문자를 그릴 때 매우 가볍게 빠져들 수 있으므로 잊지 마십시오.

기울기 문자 그리기


Draw류textannotate로 문자를 그리지만 기울어지면 각자 기울어지기 위해 사용하는 방법, 속성이 다르기 때문에 둘 다 설명이 있습니다.

text 메서드를 사용하는 경우


차용https://rmagick.github.io/rotate.rb.html의 코드는 필요한 곳만 발췌한다
주안점
  • 그리는 동안 좌표계를 회전하는 문자
  • RMagick::Draw#rotate 방법으로 회전
  • rotate_text.rb
    require 'RMagick'
    
    imgl = Magick::ImageList.new
    # 200x200 で画像を準備しつつ、わかりやすいように薄い色でグリッドを描画しとく
    imgl.new_image(200, 200, Magick::HatchFill.new('white','lightcyan2'))
    
    gc = Magick::Draw.new
    
    # 座標系の原点を左上から中央に移動
    gc.translate(100, 100)
    
    # 45度回転(時計回り方向に)
    gc.rotate(45)
    
    # 文字を描画
    gc.fill('black') # 見やすいように黒で
    
    gc.text(0, 0, "Hello")
    gc.text(100, 0, "100,0")
    gc.text(-100, 0, "-100,0")
    
    gc.draw(imgl)
    
    imgl.write("png32:rotate.png") # ファイルに書き出し
    

    annotate 메서드를 사용하는 경우

  • RMagick::Draw#annotate 방법 블록 내의 속성을 이용하여 rotation 회전
  • rotate_annotate.rb
    require 'RMagick'
    
    imgl = Magick::ImageList.new
    # 200x200 で画像を準備しつつ、わかりやすいように薄い色でグリッドを描画しとく
    imgl.new_image(200, 200, Magick::HatchFill.new('white','lightcyan2'))
    
    gc = Magick::Draw.new
    
    # 座標系の原点を左上から中央に移動(annotateメソッドはtranslateの影響を受けないので↓は実は無意味)
    gc.translate(100, 100)
    
    # 45度回転(時計回り方向に)(このrotateも無意味)
    gc.rotate(45)
    
    # 文字を描画
    # translateで移動した座標系の影響を受けないので中心の位置に描画できるように100,100を指定
    gc.annotate(imgl,0,0,100,100,'Hello') do
      self.fill = 'black' # 見やすいように黒で
      self.rotation = '45'
    end
    # 元の座標系の100,0の位置に描画される
    gc.annotate(imgl,0,0,100,0,'100,0') do
      self.fill = 'black' # 見やすいように黒で
      self.rotation = '45'
    end
    # 元の座標系の-100,0の位置に描画されるが、画像の外なので見えない
    gc.annotate(imgl,0,0,-100,0,'-100,0') do
      self.fill = 'black' # 見やすいように黒で
      self.rotation = '45'
    end
    
    gc.draw(imgl)
    
    imgl.write("png32:rotate.png") # ファイルに書き出し
    

    요점에 부합하다

  • 텍스트 그리기에 익숙해지면annotate
  • rotate 방법이 작동하지 않으니 어떡하지?
  • 좌표계가 이동하거나 회전하더라도 annotate에 영향을 미치지 않는다
  • annotate의 블록 안은 rotate 방법이 아니라 rotation 속성이기 때문에 틀리기 쉽다
  • 최신 문서에 자세히 설명되어 있지 않음
  • http://www.rubydoc.info/gems/rmagick/Magick/Draw#annotate-instance_method
  • - Additional Draw attribute methods may be called in the optional block, which is executed in the context of an Draw object.에는'Additional Draw attribute'가 어떤 것을 의미하는지
  • 가 자세히 쓰여 있지 않다.
  • 이전 문서에는
  • http://www.simplesystems.org/RMagick/doc/draw.html#annotate
  • 좋은 웹페이지 즐겨찾기