2

在画布上显示图形图像的正确方法是什么?我有来自以下的对象 aImage:

(ImageReader fromFile: 'clockface.jpg') image.

我通过 GUIBuilder(new canvas->install) 创建了名为 ClockWindow 的新类:

 (...)superclass: #{UI.ApplicationModel}(...)

和方法初始化:

initialize
|img  gc|
img:=(ImageReader fromFile: 'clockface.jpg') image.
img convertForGraphicsDevice: Screen default.
gc := ScreenGraphicsContext new.
img displayOn: gc.
gc displayOn: self.

但我得到了错误:messageNotUnderstood:representImage:anImage forMedium:medium in line with:“img displayOn:gc。”

4

1 回答 1

0

最简单的方法是使用带有图像的标签。就是这样:

  1. 定义一个名为clockFace的类方法,它返回图像
clockFace
  <resource: #image>
  ^(ImageReader fromFile: 'clockface.jpg') image
  1. 向 UI 添加标签

  2. 点击“标签即图像”

  3. 对于消息,使用#clockFace

一直从文件加载钟面图像会很慢。要解决此问题,请转到 clockFace 方法,选择“编辑”,然后在 ImageEditor 中使用“安装”。这将使用将图像存储在方法中的等效方法替换从文件加载图像的代码。

对于额外的布朗尼点,您可以创建另一个类方法来为您提供 CachedImage。CachedImage 将更快地重新显示在 UI 上,因为它不必在每次显示时都将图像转换为屏幕的调色板。只需像这样创建一个名为 clockFaceCachedImage 的类方法:

clockFaceCachedImage
  ^CachedImage on: self clockFace

您现在可以使用 clockFaceCachedImage 作为标签的消息。

于 2012-11-06T05:14:53.190 回答