当前位置:  开发笔记 > 编程语言 > 正文

如何在Flex 3中的图形上放置图像(例如PNG)?

如何解决《如何在Flex3中的图形上放置图像(例如PNG)?》经验,为你挑选了2个好方法。

我是Flex的新手,我正在尝试编写一个简单的应用程序.我有一个带图像的文件,我想在图形上显示这个图像.我该怎么做呢?我尝试[嵌入] - 并将其作为子项添加到拥有图形的组件中,但是我得到了"类型强制失败:无法转换为...到mx.core.IUIComponent"错误.



1> hasseg..:

在我的脑海中,我可以想到两件可能对你有帮助的事情(取决于你想要实现的目标):

如果您只想显示已嵌入的图像,可以将图像组件添加到舞台,并将其值设置sourceClass您要嵌入的图形资源():

[Bindable]
[Embed(source="assets/image.png")]
private var MyGfx:Class;

myImage.source = MyGfx;

如果您确实想要将位图绘制Graphics对象上,可以使用beginBitmapFill()方法执行此操作:

[Bindable]
[Embed(source="assets/image.png")]
private var MyGfx:Class;

var myBitmap:BitmapData = new MyGfx().bitmapData;
myGraphics.beginBitmapFill(myBitmap);
myGraphics.endFill();

您可能会发现Adobe网站上的Flex Quick Starts文章很有用,尤其是"嵌入资源"部分.



2> Levon..:

接受的答案是不完整的,因为没有任何呼吁drawRect()将被绘制.我已经用这种方式实现了它并且它有效.请注意,我添加了矩阵转换,否则必须在0,0处绘制图像,否则会被错误地剪裁.

[Embed(source='assets/land-field.png')] 
private var ImgField:Class; 
private var field:BitmapData = new ImgField().bitmapData;

public static function drawImage(g:Graphics, image:BitmapData, x:int, y:int):void {
  var mtx:Matrix = new Matrix();
  mtx.translate(x, y);
  g.beginBitmapFill(image, mtx, false, false);
  g.drawRect(x, y, image.width, image.height);
  g.endFill();
}

推荐阅读
k78283381
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有