标签: timagelist

Delphi TImageList位图更改

我正在使用Delphi XE2 Update 3. Update 4与我们的某些第三方组件不兼容,因此我们尚未更新.

我在我的应用程序中使用TImageList.我已经注意到很多次从源视图切换到窗体视图(F12)时,突然之前未修改的单元将被修改.如果我保存按F12导致的更改,我可以查看源代码控制并看到TImageList.Bitmap属性的几个字节已更改.这是TortoiseHg Workbench中的一个例子:

@@ -830,7 +830,7 @@
     Left = 760
     Top = 480
     Bitmap = {
-      494C01010200E402E40210001000FFFFFFFFFF10FFFFFFFFFFFFFFFF424D3600
+      494C01010200E802E80210001000FFFFFFFFFF10FFFFFFFFFFFFFFFF424D3600
                   ^^  ^^  <-- two bytes changed
Run Code Online (Sandbox Code Playgroud)

有时会有其他微小的变化,但它总是仅限于TImageList.Bitmap数据中的几个孤立点.当我没有做出任何有意的改变时,不断将这些微不足道的变化推向源代码控制是一件非常痛苦的事情.

有谁知道为什么Delphi在源视图和表单视图之间切换时更改TImageList.Bitmap数据?有没有办法解决这个限制?

delphi version-control delphi-xe2 timagelist

15
推荐指数
1
解决办法
1116
查看次数

如何禁用按钮中的闪烁图像?

我有一个Button链接到ImageList.我换ImageIndex了一个OnClickEvent.

现在,我得到的问题,当我改变imageOnClickEvent它的变化,但如果我在它移动我的鼠标就说明我老之一,是脉冲.

任何人都知道如何禁用此脉冲/闪烁/交换?

编辑:HotImage是索引0.

delphi timagelist delphi-xe3

12
推荐指数
1
解决办法
604
查看次数

如何从ImageList加载透明图像?

我想从一个加载图像(32比特深度,透明的)TImageList到一个TImage.标准方法是ImageList.GetBitmap(Index, Image.Picture.Bitmap);.但是该GetBitmap方法不适用于透明度,因此我总是得到一个非透明的位图.

delphi png transparency timage timagelist

9
推荐指数
1
解决办法
2万
查看次数

如何从系统ImageList中绘制缩放版本的图像?

我创建并初始化TImageList...

ImageList:=TImageList.Create(self);
ImageList.ShareImages:=true;
Run Code Online (Sandbox Code Playgroud)

我得到了小图标的系统ImageList句柄(16x16)......

ImageList.Handle:=SHGetFileInfo('',0,FileInfo,SizeOf(FileInfo),SHGFI_SYSICONINDEX or SHGFI_SMALLICON);
Run Code Online (Sandbox Code Playgroud)

现在我想在我的控制画布上绘制缩放到50x50像素的图标.我是怎么做到的

delphi scale timagelist

8
推荐指数
2
解决办法
1859
查看次数

Windows XP SP3上的Tbutton令人讨厌的Png(XP模式Windows 7)

我在Windows XP Mode(SP3)上试用了我的应用程序(Windows 7上的dev).而我的Tbutton(以及其他)与TImageList相关的图片非常糟糕(黑色圆润).你有解释吗?还是解决方案?

在此输入图像描述

非常感谢,祝你有愉快的一天!

编辑:

@Ken在Windows XP或Windows 7上使用D2009编译的相同EXE给出了相同的结果.XP Mode SP3没有透明度(可能是虚拟机上的问题,但很奇怪)和Windows 7上的透明度......

@Ken与Delphi 2010同样的问题:测试文件(source + Exe):http://www.onkeysoft.com/Test.zip

@David:一个用Facebook,另一个不知道为什么,我只输入我的名字和电子邮件......我以为我登录但不是......(这是我第一次使用stackoverflow抱歉问题)

windows delphi png image timagelist

5
推荐指数
1
解决办法
794
查看次数

使用Delphi XE从资源加载时如何保留PNGImage掩码

我正在将我的代码升级到Delphi XE(来自Delphi 7),并试图消除所有不必要的库.我已经使用了PNGComponents很多年了,但现在是时候继续使用原生的TImageList和TPNGImage了.

我的部分代码在运行时从链接的资源中加载图像列表.我的工作PNGComponents代码是:

function CreateAndLoadImageList( ASize : integer ) : TPngImageList;
var
  PngObject : TPngObject;
  I : integer;
begin
  Result := TPngImageList.Create( nil );

  Result.BeginUpdate;
  try

    Result.Width := ASize;
    Result.Height := ASize;

    PngObject := TPngObject.create;
    try

      For I := 0 to Length( ArtImageNames ) -1 do
        begin
        PngObject.LoadFromResourceName( hInstance, Format( 'AImg%d_%d', [ASize, I]));

        Result.PngImages.Add( False).PngImage := PngObject;
        end;

    finally
      PngObject.Free;
    end;


  finally
    Result.EndUpdate;
  end;

end;
Run Code Online (Sandbox Code Playgroud)

这个问题中使用答案我现在正在尝试下面的代码,其中显示了图像,但是背景为黑色,大概是因为蒙版丢失了.我想我需要一个掩码位图来传递给ImageList_Add,其中'0'但是我对这个东西很差.有谁知道我怎么会这样工作?

function CreateAndLoadImageList( ASize : integer ) : TImageList;
var
  PngImage : …
Run Code Online (Sandbox Code Playgroud)

delphi png bitmap timagelist

5
推荐指数
1
解决办法
1843
查看次数

TSpeedbutton 中的图像与 TImageList

我尝试使用 和 来创建TToolbar一个TActionList工具TSpeedbuttonTImageList
我使用了32px的方形图像,但是当我在TSpeedButton中通过ImageIndex选择图像时,图像大小小于32px,我认为是16px。

如何TSpeedButtons使用来设置图像的大小TImageList

这是一个 MVCE:

unit Unit50;

interface

uses
  System.SysUtils, System.Types, System.UITypes, System.Classes, System.Variants,
  FMX.Types, FMX.Controls, FMX.Forms, FMX.Graphics, FMX.Dialogs,
  System.Actions, FMX.ActnList, FMX.Controls.Presentation, FMX.StdCtrls,
  System.ImageList, FMX.ImgList;

type
  TForm50 = class(TForm)
    ActionList1: TActionList;
    ImageList1: TImageList;
    SpeedButton1: TSpeedButton;
    Action1: TAction;
  end;

var
  Form50: TForm50;

implementation
{$R *.fmx}
end.
Run Code Online (Sandbox Code Playgroud)

设计制造:

object Form50: TForm50
  Left = 0
  Top = 0
  Caption = 'Form50'
  ClientHeight = 480
  ClientWidth = 640
  FormFactor.Width = …
Run Code Online (Sandbox Code Playgroud)

delphi timagelist firemonkey delphi-xe8

5
推荐指数
1
解决办法
4979
查看次数

德尔福和48x48(或更大)的图像列表 - 是否有解决方法?

我正在获取系统图像列表(使用SHGetFileInfo和SHGFI_LARGEICON),添加两个我自己的图标并将其附加到TListView.

问题是如果用户的图标大小未设置为32x32(例如它设置为48x48),则Delphi7 TImageList会因"图像大小无效"错误而失败.

有没有人知道是否有可用的解决方法?我尝试过使用TPngImageList但它会导致其他问题.

此外,请注意我想保留图标的Alpha通道.正常的1位透明度是不够的,因为图标往往看起来很丑陋.

谢谢!

delphi imagelist delphi-7 timagelist tpngimagelist

4
推荐指数
1
解决办法
5314
查看次数

TImageList限制?

是否可以在TImageList中存储多少位图?

限制是指它可以容纳的位图数量,以及图像列表的内存大小.

谢谢.

delphi imagelist timagelist

4
推荐指数
1
解决办法
902
查看次数

delphi 7 TImage和TImageList

让我是整数私人

代码

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 timage delphi-7 timagelist

3
推荐指数
1
解决办法
2548
查看次数

在运行时查看TImagelist的内容

可以在运行时调用TImagelist编辑器来查看我的内容TImagelist吗?

delphi imagelist timagelist

2
推荐指数
2
解决办法
729
查看次数