का उपयोग कर संसाधन से लोड होने पर PNGImage मुखौटा को कैसे संरक्षित किया जाए, मैं अपना कोड डेल्फी एक्सई (डेल्फी 7 से) में अपग्रेड कर रहा हूं और सभी अनावश्यक पुस्तकालयों को खत्म करने की कोशिश कर रहा हूं। मैंने उम्र के लिए पीएनजी कॉम्पोनेंट्स का उपयोग किया है, लेकिन यह समय पर जाने और मूल 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;
मैं अब कोड कोशिश कर रहा हूँ this question में एक जवाब का उपयोग करना है, जो नीचे चित्र भी दिखाता है, लेकिन काली पृष्ठभूमि के साथ, शायद क्योंकि मुखौटा खो दिया है। मुझे लगता है कि मुझे ImageList_ पास करने के लिए एक मुखौटा बिटमैप चाहिए जहां '0' है लेकिन मैं इस सामान पर खराब हूं। क्या किसी को पता है कि मैं यह कैसे काम कर सकता हूं?
function CreateAndLoadImageList(ASize : integer) : TImageList;
var
PngImage : TPngImage;
bmp : TBitmap;
I : integer;
begin
Result := TImageList.Create(nil);
Result.Masked := False;
Result.DrawingStyle := dsTransparent;
Result.BeginUpdate;
try
Result.Width := ASize;
Result.Height := ASize;
Result.Masked := False;
PngImage := TPngImage.create;
try
For I := 0 to Length(ArtImageNames) -1 do
begin
PngImage.LoadFromResourceName(hInstance, Format('AImg%d_%d', [ASize, I]));
bmp:=TBitmap.Create;
PngImage.AssignTo(bmp);
bmp.AlphaFormat:=afIgnored;
ImageList_Add(Result.Handle, bmp.Handle, 0);
Bmp.Free;
end;
finally
PngImage.Free;
end;
finally
Result.EndUpdate;
end;
end;
सीडी 32 बिट के लिए कलरडेप ने इसे किया। बहुत बहुत धन्यवाद। –