मैं .jpg को एक बीएमपी में परिवर्तित करके और फिर इसे imagelist1 में सहेजकर एक कल्पनावादी में jpg लोड करने का प्रयास कर रहा हूं।छवियों को TImageList में लोड करना और उन्हें पढ़ना?
कोड स्निप के ऊपर से नीचे तक। Selectdir काम करता है और fileexists भागों काम करते हैं। इसका उपयोग किसी फ़ोल्डर में सभी छवियों में लोड करने के लिए किया जाता है। सभी छवियों को नाम दिया गया है 0.jpg/1.jpg ect ..
तब मैं एक tpicture के लिए jpg लोड करता हूं। बीएमपी चौड़ाई/ऊंचाई सेट करें और जेपीजी के समान छवि के साथ बीएमपी लोड करें, फिर मैं कल्पनाशील को बीएमपी जोड़ता हूं। और जब यह किया जाता है तो इसे पहली छवि 0.jpg
दो समस्याएं, पहले अगर मैंने ऐसा किया तो यह केवल बीएमपी का एक छोटा सा क्षेत्र (शीर्ष बाएं) दिखाएगा लेकिन यह सही छवि थी। मुझे लगता है कि यह विकल्प फसल के कारण है। जो मुझे लगता है कि रनटाइम के दौरान इसे केंद्र का चयन कैसे करना है?
दूसरा, अगर मैं डाल
Imagelist1.width := currentimage.width;
Imagelist1.height := currentimage.height;
तो यह अंतिम छवि को दर्शाता है। Imagelist1.GetBitmap()
की तरह काम नहीं किया? तो मुझे लगता है कि किसी के लिए एक फिक्स अच्छा होगा! चियर्स squills
procedure TForm1.Load1Click(Sender: TObject);
var
openDialog : TOpenDialog;
dir :string;
MyPicture :TPicture;
currentimage :Tbitmap;
image : integer;
clTrans : TColor;
begin
Image := 0 ;
//lets user select a dir
SelectDirectory(Dir, [sdAllowCreate, sdPerformCreate, sdPrompt],SELDIRHELP);
myPicture :=Tpicture.Create;
currentimage := TBitmap.Create;
//keeps adding images as long as the file path exsist.
//thus comic pages should be renumbed to 0-XX
while FileExists(Dir+'\'+inttostr(image)+'.jpg') do
begin
try
MyPicture.LoadFromFile(Dir+'\'+inttostr(image)+'.jpg'); //load image to jpg holder
currentimage.Width := mypicture.Width; //set width same as jpg
currentimage.Height:= mypicture.Height; //set height same as jpg
currentimage.Canvas.Draw(0, 0, myPicture.Graphic); //draw jpg on bmp
clTrans:=currentimage.TransparentColor; //unknown if needed?
//Imagelist1.Width := currentimage.Width;
//imagelist1.Height := currentimage.Height;
Imagelist1.Addmasked(Currentimage,clTrans); //add to imagelist
finally
image := image +1; //add one so it adds next page
end;
end;
ImageList1.GetBitmap(0,zImage1.Bitmap);
mypicture.Free;
currentimage.Free;
end;
यह एक बिंदु पर काम करता है, एक बार यह लोड होने के बाद यह कोई छवि नहीं दिखाता है। मुझे छवि 1 को ZImage1.bitmap.assign (bmpout) में बदलना पड़ा; जैसा कि ZImage1 TGraphicControl से एक वर्ग है। यह सुनिश्चित नहीं है कि यह मायने रखता है .. –
ऐसा लगता है कि यह कभी भी लूप में नहीं मिलता है। हमेशा –
को तोड़ता है कोई तरीका नहीं है (अपवाद को छोड़कर आप अनदेखा कर रहे हैं) कि फ़ंक्शन कहलाता है तो यह 'while' लूप में नहीं जा सकता है; 'जबकि सत्य' हमेशा 'सत्य' होता है। कोड का निष्पादन करने का एकमात्र तरीका यह है कि यदि 'चयन डायरेक्टरी' झूठी रिटर्न देता है और फ़ंक्शन को परिणाम के रूप में नहीं कहा जाता है। यदि आप उस रेखा पर ब्रेकपॉइंट सेट करते हैं तो डीबगर आपको क्या दिखाता है? –