Bmp - jak to zrobić??

0

Czesc
W czasie trwania programu generuje rysunek w ten sposób:

Bat := TBitmap.Create;
Bat.Height:=192;
Bat.Width:=192;
......
Bat.Canvas.Rectangle(xi,yi,xi+6,yi+6);
......
Canvas.Draw(Image1.Left,Image1.Top, Bat);

Jednak przed wyswietleniem jej chciałbym nałozyc na ten rysunek drugą bmp, którą bede wczytywał z pliku:

Bat1.LoadFromFile('1.bmp');
Przy czym ta druga bmp jest biało-czarna wiec chciałbym pozbyć sie koloru białe.

Jak to tego sie zabrać???
Zdrowka

0

zdaje się że daje się Bat1.TransparentColor := clWhite albo coś w ten deseń
potem możesz dać, Bat1.Transparent := true i
Bat.Canvas.BrushCopy(Rect(1, 1, Bat1.Width, Bat1.Height), Bat1.Canvas, Rect(1, 1, Bat1.Width, Bat1.Height);

nie sprawdzane, pisane z pamięci ale możliwe że coś w ten deseń

0

Chyba cos jest nie tak gdyz jak my dam:

Bat1.TransparentColor := clWhite;
Bat1.Transparent := true;
Canvas.Draw(Image1.Left,Image1.Top, Bat1);

to wyswietla nam przezroczyste. Wszystko jest OK. Jednak jak nastepnie uzyje:

Bat.Canvas.BrushCopy(Rect(1, 1, Bat1.Width, Bat1.Height), Bat1, Rect(1, 1, Bat1.Width, Bat1.Height), clWhite);
Canvas.Draw(Image1.Left,Image1.Top, Bat);

to tym razem znowu pojawia sie białe tlo.

Zdrowka
kochzg

0

Jest tak, ponieważ instrukcja:

Bat.Canvas.BrushCopy(Rect(1, 1, Bat1.Width, Bat1.Height), Bat1, Rect(1, 1, Bat1.Width, Bat1.Height), clWhite);

nie rysuje obrazka tak jak w przypadku wywołania proc. Draw. Po prostu zrzyna wszystkie dane i wkleja do Bata.

0

Nie do końca. CopyRect kopiuje wszystko jak leci. BrushCopy potrafi rysować ort!, ale w inny sposób (zdaje się Brush.Color trzeba ustawić na taki, jaki ma być ort!, albo coś takiego, dawno się w to nie bawiłem i już nie pamiętam).

1 użytkowników online, w tym zalogowanych: 0, gości: 1