编写移动应用程序 - 它从安全网站中提取图像,如下图所示(第一张图像)拉不正确(通知网页版本与移动版本),第二张图片在网站上正确显示,但德尔福TImage因某种原因正在旋转它我无法弄清楚为什么.旋转设置为0,并在TImage组件上设置"适合".
思考?
TImage控件不支持PNG.是否会有一些第三方组件?
谢谢!
Delphi 2006的TImage并不完全支持PNG.为了在我的表单上具有alpha透明度的图像,我必须在运行时加载它们.我可以在设计时加载它们但它们不能存活,我认为因为PNG没有保存在DFM文件中.我确信这在最新的Delphi中都是笨拙的,但我现在无法升级.
无论如何,我在运行时加载它们:
Image1.Picture.Assign (PngImageCollection1.Items [0].PNGImage) ;
Run Code Online (Sandbox Code Playgroud)
PNGImageCollection组件包含各种大小的PNG(这些PNG在设计时创建和加载),我将它们分配给FormCreate事件中的相应TImages.
这个工作正常,直到我遇到一个问题,我试图在表单上使用它之后在其他地方重用其中一个图像.我发现分配TPicture的行为已将其设置为由于Assign而导致的空图像.这发生在例程TPicture.ForceType中,AFAICT检查FGraphic的类型,如果它不是所需类型,它将释放FGraphic并创建所请求类型的新实例.
好.所以在经过一番搔痒之后,我发现也许我应该这样做:
Image1.Picture.Bitmap.Assign (PngImageCollection1.Items [0].PNGImage) ;
Run Code Online (Sandbox Code Playgroud)
这就是诀窍,因为Assign没有破坏图像,但现在图像显示半透明位不透明,即:

代替:

如何让此图像正确显示alpha透明位?(和补充问题:是Image1.Picture.Bitmap.Assign正确的方法吗?).
以下是更详细的代码:
在我有问题"重用"TImage的代码中,序列是:
在表单上创建:
LogoImage.Picture.Assign (PngImageCollection1.Items [0].PNGImage) ;
Run Code Online (Sandbox Code Playgroud)
(PNGIMage是公司徽标,LogoImage1是主要表格).
在打印报告标题上:
procedure PrintLogo (Report : TBaseReport) ;
var
X1, Y1, LogoHeightMM : Double ;
begin
with Report do
begin
LogoHeightMM := CalcGraphicHeight (LogoWidthMM, MainForm.LogoImage.Picture.Graphic) ;
X1 := PageWidth - MarginRight - LogoWidthMM ;
Y1 := SectionBottom - LogoHeightMM ;
PrintBitmapRect (X1, Y1, X1 + LogoWidthMM, Y1 + LogoHeightMM, MainForm.LogoImage.Picture.Bitmap) ;
end ;
end ;
Run Code Online (Sandbox Code Playgroud)
第一次打印徽标的例程被调用时,它会毫无错误地执行,但是在调用PrintBitmapRect之后,LogoImage …
我正在使用TImage组件加载一些png图像,但其中一些具有.imp扩展名.我将Vcl.Imaging.pngimage单元添加到我的代码中,我正在使用此代码加载图像
if OpenDialog1.Execute then
Image1.Picture.LoadFromFile(OpenDialog1.FileName);
Run Code Online (Sandbox Code Playgroud)
但是,当执行LoadFromFile过程时,会引发异常
未知的图片文件扩展名(.imp)
这些图像(.imp)是由外部应用程序生成的png文件,位于只读文件夹中,因此重命名这些文件不是一个选项,问题是如何从文件中加载TImage组件中的Png图像还有另一个扩展吗?
我编写了一个存储照片的应用程序,保留了数据库中照片的路径.我遇到了一个问题.当我单击我的按钮选择要在TImage对象中显示的图片供用户在保存之前查看时,我收到以下异常通知:引发异常类:EInvalidGraphic,消息"未知图片扩展名(.jpg)"
我正在使用TopenPicture组件来获取图像.openPicture.filter属性设置为接受大多数图像格式(jpg,jpeg,png,gif,bmp),但我无法将任何这些格式加载到TImage组件中.
这是我用来加载图像的代码:
openPicture.Execute();
filename := openPicture.FileName;
if not(fileName = '') then
begin
imgFoto.Picture.LoadFromFile(filename);
imgFoto.Visible := true;
end;
Run Code Online (Sandbox Code Playgroud) 是否有任何演示可用于显示如何在移动应用程序中处理多分辨率图像,例如按钮图像,闪屏和背景?我正在尝试制作一个在许多分辨率上看起来不错的应用程序,但我在执行它时遇到了问题.
例如,如果我在三星Galaxy Tab 2.0 7中加载我的应用程序,它将自动加载我所拥有的1.0的比例,但如果我在三星galaxy s4中加载我的应用程序,那么它将加载1.5比率的图像.现在......如果我使用480x800的比例1的图像,对于Galaxy Tab 2.0的屏幕而言,它有点小,如果我再次在具有较小屏幕的移动设备中加载应用程序,其将使用比率1.0,图像尺寸为好.
由于我不能指定两个不同的分辨率图像到一个特定的比例我应该如何正确使用TImage的MultiResolution属性?
作为一个新手,我刚刚回答了第一个问题(Delphi:TImage.Create导致访问冲突)立即遇到一个新问题:
procedure TSelectorForm.FormCreate(Sender: TObject);
var
Loop: Byte;
begin
for Loop := 1 to 10 do
begin
ArrayOfImages[Loop] := TImage.Create(SelectorForm);
MainForm.MyImageList.GetBitmap(Loop - 1, ArrayOfImages[Loop].Picture.Bitmap);
ArrayOfImages[Loop].Top := ...
ArrayOfImages[Loop].Left := ...
ArrayOfImages[Loop].Enabled := True;
ArrayOfImages[Loop].Visible := True;
end;
end;
Run Code Online (Sandbox Code Playgroud)
当我显示这个表格
procedure TMainForm.MyImageClick(Sender: TObject);
begin
SelectorForm.Visible := True;
end;
Run Code Online (Sandbox Code Playgroud)
图像不可见.我究竟做错了什么?
我要感谢大家的建议.希望,提出基本问题有助于其他人在将来避免询问他们:-)
我有一个TImage组件,我使用TCanvas.TextOut()打印文本字符串.我将TImage的高度和宽度设置为50像素X(TextWidth)像素的大尺寸,并将Canvas字体高度设置为略小于48像素的高度.然后我将BitBlt()TImage的位图放到主Canvas上.我在屏幕上看到的是那些非常粗糙的大字母.我想要的是厚厚的巨型字母,看起来很光滑.使用TImage/BitBlt组合的原因是因为我需要动态地调整文本的大小和alpha混合.
对我来说,最简单的方法是将大光滑的字母打印到我的TImage位图上?
如果我从这样的文件加载图像Image1.Picture.LoadFromFile(imagePath);并且JPEG I加载大于Image1a TImage- 如何将其缩放以适合?
我TImage在我的程序中使用了一个组件.
在运行时,我使用以下命令向组件添加图像:
Image1.Picture.LoadFromFile('C:\Users\53941\Pictures\eq1.jpg');
Run Code Online (Sandbox Code Playgroud)
现在,我想在其他计算机上运行这个程序,这个计算机上没有这个图像文件.
那么,我如何将这个图像文件存储在程序可执行文件中呢?
delphi ×10
timage ×10
delphi-xe2 ×2
firemonkey ×2
png ×2
delphi-2006 ×1
delphi-2007 ×1
delphi-7 ×1
delphi-xe5 ×1
fonts ×1
truetype ×1