rejetto forum
Software => &RQ => Russian => Topic started by: Shyr on February 18, 2004, 11:08:28 AM
-
Êòî-íèáóäü èç ðàçðàáîò÷èêîâ ïîáîðîë, òàêóþ ôèãíþ: â ìåíþøêàõ èêîíêè íå íà ïðîçðà÷íîì ôîíå, à íà ñåðîì, ïðè÷åì ñåðîñòü ðàçíîãî îòòåíêà - èíîãäà âèäíà, èíîãäà íå î÷åíü?..
-
Àíàëîãè÷íàÿ ôèãíÿ... íåóæåëè áîëüøå íè ó êîãî íå âñòðå÷àåòñÿ? Êàê èçáàâèòüñÿ îò ýòîãî ãëþêà?
-
Àíàëîãè÷íàÿ ôèãíÿ... íåóæåëè áîëüøå íè ó êîãî íå âñòðå÷àåòñÿ? Êàê èçáàâèòüñÿ îò ýòîãî ãëþêà?
Ïðîçðà÷íîñòü ïîÿâëÿåòñÿ òîëüêî òîãäà, êîãäà â ñêèíå èñïîëüçóþòñÿ ïðîçðà÷íûå PNG. Åñëè îíè íåïðîçðà÷íû, òî ïîëó÷àåòñÿ òî, ÷òî êàê ðàç ó âàñ âñåõ.
Ó ìåíÿ âñå íîðìàëüíî.
Áåðèòå ôîòîøîï (èëè åùå ÷òî) è äåëàéòå png'øêè ñ ïðîçðà÷íûì ôîíîì. Õîòÿ ïðîùå ñêà÷àòü
-
ý-ý-ý-ý...òû äóìàåøü ìû íå ïîíÿëè ÷òî ïðîçðà÷íîñòü äîëæíà áûòü òîëüêî òàì ãäå îíà åñòü â png? =))
Íî ïîíèìàåøü ëè, â èñõîäíèêàõ êîòîðûå âûëîæèë ðåäæåòòî åñòü íåñêîëüêî ãëþêîâ, èç-çà êîòîðûõ ïðîçðà÷íîñòü ëèáî åñòü âåçäå, ëèáî åå âåçäå íåò...à íàñ÷åò ôîòîøîïà..òû æå íå áóäåøü ïåðåðèñîâûâàòü âñå ñîçäàííûå òåìêè ïîä ñâîþ âåðñèþ êðûñû? =)))
-
ß óæå ñîâåòîâàë âîîáùå çàìåíèòü áèáëèîòåêó PNGunit íà pngImage (http://pngdelphi.sourceforge.net) È íå íóæíà áóäåò íèêàêàÿ dll. Ïðîçðà÷íîñòü â íåé ðåàëèçîâàíà õîðîøî! Ïåðåäåëêà êîäà ìèíèìàëüíàÿ (ìåíÿåòüñÿ íàçâàíèå ô-è).[/url]
-
ß óæå ñîâåòîâàë âîîáùå çàìåíèòü áèáëèîòåêó PNGunit íà pngImage (http://pngdelphi.sourceforge.net) È íå íóæíà áóäåò íèêàêàÿ dll. Ïðîçðà÷íîñòü â íåé ðåàëèçîâàíà õîðîøî! Ïåðåäåëêà êîäà ìèíèìàëüíàÿ (ìåíÿåòüñÿ íàçâàíèå ô-è).[/url]
Ïðèìåðû êîäîâ åñòü? à òî ÿ ñäåëàë êàê â õåëïå äàíî - íèêàêîãî ýôôåêòà (ýòî ÿ ïðî ñîçäàíèå BitMap-a èç PNG ñ ïðîçðà÷íîñòüþ)
-
Ó ìåíÿ äðóãàÿ ïðîáëåìà. PNG çàãðóæàåòñÿ íîðìàëüíî è BMP âûâîäèòñÿ ñ íîðìàëüíîé ïðîçðà÷íîñòüþ, ÍÎ ïàëèòðà â BMP ïåðåäàåòñÿ íå òà, ÷òî â PNG. Ìåíüøå öâåòîâ, ñêîëüêî íå ìîãó ñêàçàòü, âðîäå 256, âìåñòî 24 áèò, êàê ïîëîæåíî. Èñïîëüçóþ PngImage, â ÷åì ìîæåò áûòü ïðîáëåìà?
function loadPic(fn:string; bmp:Tbitmap):boolean;
var
ext:string;
png:TPNGObject;
begin
PNG:=TPNGObject.Create;
try
result:=TRUE;
if not absPath(fn) then fn:=myPath+fn;
ext:=extractFileExt(fn);
if comparetext(ext,'.png')=0 then
begin
bmp.Transparent:=FALSE;
// ReadBitmapFromPngFile(fn,bmp);
PNG.LoadFromFile(fn);
bmp.PixelFormat:=pf24bit;
bmp.Assign(PNG);
end
else
begin
if ext <> '.bmp' then fn:=fn+'.bmp';
bmp.loadFromFile(fn);
bmp.transparent:=TRUE;
end;
except
result:=FALSE
end;
png.Free;
end; // loadPic
-
Âîò èìåííî ïî ýòîìó ÿ è íå ñòàë åãî þçàòü... Ïðîáëåìà íå â ýòîé ïðîöåäóðêå, à â ñàìîì pngimage (ïðè ñ÷èòûâàíèè png ôàéëà ïî-ìîåìó)
-
Ïðîáîâàë ñ÷èòûâàòü è çàïèñûâàòü png-ôàéë, öâåòà áûëè íîðìàëüíûìè. Âèäíî ïðîáëåìà â òîì, êàê ýòè öâåòà ïåðåäàþòñÿ â TBitmap
Òàê ÷òî òîãäà èñïîëüçîâàòü? Êàê ðåøèòü ïðîáëåìó?
-
Ïî-ìîåìó ïðîùå èñïðàâèòü pngunit... òàì ãëþê ïðè ïðåîáðàçîâàíèè àëüôà êàíàëà png-øíîãî â ïðîöåäóðêå ReadBitmapFromPng êàæåòñÿ...
-
Íàðîä, ïîçäðàâëÿþ, íè÷åãî íå ñîîáðàæàÿ â àëüôà êàíàëàõ ÿ âðîäå íàøåë ãëþê è ñïîñîá åãî èñïðàâèòü.
 ìîäóëå PngUnit.pas íàéäèòå ïðîöåäóðó
procedure DrawPng(ACanvas: TCanvas; const Rect: TRect);
òàì åñòü ñòðî÷êè
if a = 0 then
begin
// alpha is zero so no blending, just image data
sl[ndx] := b;
sl[ndx + 1] := g;
sl[ndx + 2] := r;
end
else if a < 255 then
begin
// blend with data from ACanvas as background
sl[ndx] := ((sl[ndx] * a) + ((255 - a) * b)) div 255;
sl[ndx + 1] := ((sl[ndx + 1] * a) + ((255 - a) * g)) div 255;
sl[ndx + 2] := ((sl[ndx + 2] * a) + ((255 - a) * r)) div 255;
end;
Èõ íàäî çàìåíèòü íà
if (a > 0) then
begin
// alpha is zero so no blending, just image data
sl[ndx] := b;
sl[ndx + 1] := g;
sl[ndx + 2] := r;
end
else
begin
// blend with data from ACanvas as background
sl[ndx] := ((sl[ndx] * a) + ((255 - a) * b)) div 255;
sl[ndx + 1] := ((sl[ndx + 1] * a) + ((255 - a) * g)) div 255;
sl[ndx + 2] := ((sl[ndx + 2] * a) + ((255 - a) * r)) div 255;
end;
Ïîñëå ýòîãî âñå èêîíêè ñòàëè îòëè÷íî ïîêàçûâàòüñÿ è áåç ãëþêîâ. Êàê âèäèòå, ïðèøëîñü ïîìåíÿòü â ïðîöåäóðå óñëîâèÿ ïî÷òè íà ïðîòèâîïîëîæíûå. Ñ ÷åì ýòî ñâÿçàíî - íå çíàþ. Îäíàêî äëÿ êðûñêè ýòîò âàðèàíò ïîäîõîäèò, ïî-êðàéíåé ìåðå ó ìåíÿ. Åñëè ó êîãî-òî òîæå ðàáîòàåò, ïóñòü îòïèøåòñÿ...
Çàáûë ñêàçàòü, ÷òî â ìîäóëå utilLib â ïðîöåäóðå
function loadPic(fn:string; bmp:Tbitmap):boolean;
bmp.Transparent äîëæåí áûòü ðàâåí true;
-
Ñêàæåì ñïàñèáî Vilux-ó !!! Óðààà!!