相关疑难解决方法(0)

为什么这个D2006代码不能淡化PNG图像?

这个问题来自较早的问题.大多数代码来自可能在后续版本的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 png timage alphablending delphi-2006

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

标签 统计

alphablending ×1

delphi ×1

delphi-2006 ×1

png ×1

timage ×1