Ik weet dat als ik mijn TBitmap instel op pf32bit, dat ik dan een extra byte heb voor de alpha.
Het probleem is dat als ik met de canvas routines ga tekenen, deze data verdwijnt of verprutst word.
Een gewone TColor ondersteund geen alpha en als ik dus een lijn of rechthoek teken, worden de alpha bytes op 0 gezet.
(Correct me if i'm wrong).
Dit is de rede dat ik een apart 8bit bitmap wou gebruiken zodat ik de de volgende routine kon schrijven:
Code:
TAlphaColor = record
r,g,b,a: byte;
end;
procedure DrawRect(x,y,width,height: integer; Color: TAlphaColor);
begin
with fBitmap.canvas do
begin
//stel RGB kleur in
Brush.Color := RGB(Color.r,Color.b,Color.g);
Pen.Color := RGB(Color.r,Color.b,Color.g);
Rectangle(Bounds(x,y,width,height));
end;
with fAlphaMask.canvas do
begin
//stel Alpha waarde als kleur in
//weet niet hoe dit eruit gaat zien, ik maak nu een soort 24bit
//grijswaarde maar dat zal wel fout zijn :)
Brush.Color := RGB(Color.a,Color.a,Color.a);
Pen.Color := RGB(Color.a,Color.a,Color.a);
Rectangle(Bounds(x,y,width,height));
end;
end;
Zoiets wil ik bereiken, mocht iemand geen betere workaround in gedachten hebben
Het gaat er mij om dat ik de canvas functies op een enigsinds normale manier kan gebruiken en dat ik uiteindelijk een goede ARGB set kan creeeren voor elke pixel.
Maar er zijn nog wat vraagtekens. Hoe maak ik een 8bit Bitmap en hoe stel ik een 8bit kleur in??
Bookmarks