डेल्फी 2006 का टीआईएमज पीएनजी का काफी समर्थन नहीं करता है। मेरे रूपों पर अल्फा पारदर्शिता वाली छवियां रखने के लिए मुझे उन्हें रन-टाइम पर लोड करना होगा। मैं उन्हें डिजाइन समय पर लोड कर सकता हूं लेकिन वे जीवित नहीं रहते हैं, मुझे लगता है क्योंकि पीएनजी डीएफएम फ़ाइल में सहेजे नहीं जाते हैं। मुझे यकीन है कि यह नवीनतम डेल्फी में सभी हंसी-डोरी है लेकिन मैं इस समय सही तरीके से अपग्रेड नहीं कर सकता।डेल्फी 2006: टीआईएमएजी को पीएनजी के रन-टाइम असाइनमेंट अल्फा पारदर्शिता खो देता है
वैसे भी, मैं के साथ रन-टाइम में उन्हें लोड किया गया था:
Image1.Picture.Assign (PngImageCollection1.Items [0].PNGImage) ;
PNGImageCollection घटक विभिन्न आकार के सभी मेरी PNG का (इन बनाया और डिजाइन समय में लोड किए गए हैं) रखती है, और मैं करने के लिए उन्हें आवंटित FormCreate घटना में संबंधित TImages।
यह ठीक काम करता है, जब तक कि मुझे कोई समस्या न हो, जहां मैं किसी भी रूप में इन छवियों में से किसी एक को फिर से उपयोग करने के बाद इन छवियों में से किसी एक का पुन: उपयोग करने का प्रयास कर रहा था। मैंने पाया कि टीपीिक्चर को आवंटित करने के कार्य ने इसे असाइन किए जाने के परिणामस्वरूप एक खाली छवि पर सेट कर दिया था। यह नियमित TPicture.ForceType में हो रहा था, जो AFAICT FGraphic के प्रकार की जांच करता है, और यदि यह वांछित प्रकार नहीं है, तो यह FGraphic को मुक्त करता है और अनुरोधित प्रकार का एक नया उदाहरण बनाता है।
ठीक है। तो चारों ओर खरोंच का एक सा के बाद, मुझे लगता है कि शायद मैं वास्तव में यह कर किया जाना चाहिए:
Image1.Picture.Bitmap.Assign (PngImageCollection1.Items [0].PNGImage) ;
यह दांव, कि में असाइन छवि पीटना नहीं किया था, लेकिन छवि अब अर्द्ध साथ चलता अपारदर्शी, यानी के रूप में पारदर्शी बिट्स:
के बजाय:
कैसे ca n मुझे यह छवि अल्फा-पारदर्शी बिट्स को ठीक से प्रदर्शित करने के लिए मिलती है? (और पूरक प्रश्न: छवि 1 है। चित्र। बिटमैप। इसे करने का सही तरीका बताएं?)।
यहाँ थोड़ा और अधिक विस्तार में कोड है:
कोड जहाँ मैं समस्या "पुन: उपयोग" एक TImage था में, दृश्य था:
प्रपत्र पर बनाने के लिए:
LogoImage.Picture.Assign (PngImageCollection1.Items [0].PNGImage) ;
(PNGIMage एक कंपनी लोगो है, लोगोइमेज 1 मुख्य रूप पर है)।
प्रिंट रिपोर्ट हेडर पर:
procedure PrintLogo (Report : TBaseReport) ;
var
X1, Y1, LogoHeightMM : Double ;
begin
with Report do
begin
LogoHeightMM := CalcGraphicHeight (LogoWidthMM, MainForm.LogoImage.Picture.Graphic) ;
X1 := PageWidth - MarginRight - LogoWidthMM ;
Y1 := SectionBottom - LogoHeightMM ;
PrintBitmapRect (X1, Y1, X1 + LogoWidthMM, Y1 + LogoHeightMM, MainForm.LogoImage.Picture.Bitmap) ;
end ;
end ;
पहली बार नियमित लोगो मुद्रित करने के लिए कहा जाता है यह त्रुटि के बिना निष्पादित करता है, लेकिन LogoImage .Picture PrintBitmapRect करने के लिए कॉल के बाद मंजूरी दे दी छोड़ दी जाती है। अगली बार जब प्रिंट हेडर रूटीन कहा जाता है, तो CalcGraphicHeight को कॉल विफल रहता है क्योंकि छवि की चौड़ाई और ऊंचाई शून्य होती है।
चित्र बदलना। चित्र के लिए साइन इन करें। बिटमैप.एस्जिन ने हेडर प्रिंट रूटीन में आरटीई को ठीक किया है, लेकिन जब मैंने पीएनजी (जैसे उपरोक्त गियर) से आवंटित अन्य स्थिर छवियों को "फिक्स" ट्रांसप्लांट किया था तो मैंने खो दिया आभा चैनल
मैं पक्ष में सवाल पर एक टैग का देने की सलाह देते हैं 'डेल्फी' का। ऐसे डेवलपर्स होना चाहिए जिन्होंने अतीत में पिछले संस्करणों का उपयोग किया हो लेकिन वर्तमान में उनके टैग नहीं देख रहे हैं .. –
सबसे अच्छा परीक्षण केस में पुन: पेश करने का प्रयास करना सबसे अच्छा है, फिर वहां से काम करें। यदि आप उस छोटे टेस्ट केस को पोस्ट कर सकते हैं तो यह बहुत मदद करता है। –