我已经将我TImage.Canvas在Delphi 2009中绘制的问题缩小到以下可重现的案例:
鉴于:一种形式,一个TImage,TLabel并TButton在其上.它TImage被锚定到所有四个边缘,以便调整窗体大小将调整大小TImage.我希望能够做的是Image1在调整大小后使用可用的最大区域.所以在我的测试用例中,我在Button的OnClick处理程序中有以下代码:
procedure TForm1.Button1Click(Sender: TObject);
begin
Label1.Caption:= IntToStr (Image1.Width)+' x '+IntToStr(Image1.Height);
Image1.Canvas.Pen.Color:= 0;
Image1.Canvas.Rectangle(0,0,Image1.Width, Image1.Height);
end;
你会看到,如果窗体大小,Image1.Width并.Height改变预期,但如果调整的形式是绘制矩形较大比原来的,将是不完整的,只对在那里以前同一区域绘制.
如何使用整个调整大小的区域?
对于它的价值,在我玩过的原始问题中Image1.Stretch,这允许我在调整大小时使用更多区域,但会导致我的图形被扭曲(不需要).如果我也使用Image1.Proportional,那么它会更好,但我仍然无法使用可用的完整区域.Image1.AutoSize似乎也没有对我做任何有用的事情.
任何帮助赞赏.
创建新的TImage时,它是透明的.在将对象绘制到此图像后,我想清除它们.请注意,我需要保持图像透明,因为TImage被用作另一个图像的叠加层.
TImage的某种"清晰"功能是最好的.我想我在这里缺少一些简单的东西,我在TImage菜单中找不到任何明确的功能.
如何TImage在Delphi中平铺图像?
为什么我需要它:我可以在运行时创建一个并存储我的图像,而不是在运行时创建更多的TImages,因为它知道它将"适合"直到达到TImage的高度和宽度.
请提出任何建议.
谢谢!
编辑:请注意,我不是要求拉伸图像,而是通过重复图像填充画布.
我正在使用delphi.我有TImage,我为其分配了一个位图.
imgmain.Picture.Bitmap := bmpMain;
imgmain.Picture.Bitmap.PixelFormat := pf24bit;
Run Code Online (Sandbox Code Playgroud)
imgmain是TImage的对象,bmpMain是TBitmap的对象
我想缩放我的图像.我的表单上有一个轨迹栏,当我点击轨迹栏时,图像应该变焦.我该怎么办?
谢谢.
编辑:
我在这里找到了一些解决方案它有效,但它削减了我的形象.
让我是整数私人
代码
procedure TForm1.Image1Click(Sender: TObject);
begin
inc(i);
ImageList1.GetIcon(i mod 4,Image1.Picture.Icon);
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
i:=0;
ImageList1.GetIcon(i mod 4,Image1.Picture.Icon);
end;
Run Code Online (Sandbox Code Playgroud)
如何从列表中拉伸图标以适合Image1的大小?
这个问题来自较早的问题.大多数代码来自可能在后续版本的Delphi中使用的建议答案.在D2006中,我没有获得全范围的不透明度,图像的透明部分显示为白色.
图片来自http://upload.wikimedia.org/wikipedia/commons/6/61/Icon_attention_s.png.
它在运行时从PNGImageCollection加载到TImage中,因为我发现你必须这样做,因为在保存DFM后图像不会保持不变.出于演示行为的目的,您可能不需要PNGImageCollection,并且可以在设计时将PNG图像加载到TImage中,然后从IDE运行它.
表单上有四个按钮 - 每个按钮设置不同的不透明度值.Opacity = 0工作正常(paintbox图像不可见,opacity = 16看起来没问题,除了白色背景,不透明度= 64,255相似 - 不透明度似乎在10%左右饱和.
关于什么事情的任何想法?
unit Unit18;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ExtCtrls, pngimage, StdCtrls, Spin, PngImageList;
type
TAlphaBlendForm = class(TForm)
PaintBox1: TPaintBox;
Image1: TImage;
PngImageCollection1: TPngImageCollection;
Button1: TButton;
Button2: TButton;
Button3: TButton;
Button4: TButton;
procedure PaintBox1Paint(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
procedure Button4Click(Sender: TObject);
private
FOpacity : Integer ;
FBitmap : TBitmap ;
{ …Run Code Online (Sandbox Code Playgroud) 可能重复:
如何在delphi形式中使用动画Gif
我最近将我的Delphi 7版本更新为Delphi XE3.
使用Delphi 7,我使用一个组件在TImage上放置一个GIF,delphi XE3已经与gif兼容,没有必要安装任何额外的第三方组件.
我的问题是:当我将gif附加到TImate时,它变为静态,仅显示第一帧.
这有什么命令吗?喜欢Image1.Play还是什么?
我有一个TBitmap,其中包含带alpha通道的半透明图像(在本例中我是从TPngImage获得的).
var
SourceBitmap: TBitmap;
PngImage: TPngImage;
begin
PngImage := TPngImage.Create();
SourceBitmap := TBitmap.Create();
try
PngImage.LoadFromFile('ImgSmallTransparent.png');
SourceBitmap.Assign(PngImage);
SourceBitmap.SaveToFile('TestIn.bmp');
imgSource.Picture.Assign(SourceBitmap);
finally
PngImage.Free();
SourceBitmap.Free();
end;
Run Code Online (Sandbox Code Playgroud)
当我将此TBitmap保存到TestIn.bmp文件并使用任何图像查看器打开它时,我可以看到透明度.但是当我将它分配给TImage时,透明像素显示为黑色(TImage有Transparent = True).
如何在TImage上正确显示具有透明度的TBitmap?
我想用Delphi制作一个应用程序.问题是我将有很多TImage组件 - 这将使exe大小非常大.到目前为止,我的exe是20MB大,我只完成了主页,根据我的计算,exe单独的大小将超过10GB - 这太过分了.
如何制作具有数百/数千张图像的应用程序,同时让exe的尺寸变小?
如果有可疑的参数值,则会在对话框中显示"警告"图像.用户并不总是会注意到它,所以我想在一秒左右的时间内循环淡入淡出(是的,我可以切换Visible属性,但这看起来有点像我只是切换Visible属性).有没有比将它放在自己的表单上并将其浮动在对话框上(以及更改表单的AlphaBlendValue属性)更简单的方法?
delphi ×10
timage ×10
delphi-2006 ×2
animation ×1
delphi-2009 ×1
delphi-7 ×1
delphi-xe3 ×1
gdi ×1
gif ×1
png ×1
tbitmap ×1
timagelist ×1
transparency ×1
vcl ×1