Chciałbym ustawić obraz w TImage po prawej.
Domyślnie dostępne jest jedynie po lewej (lub po lewej i góry - gdy pole Image jest większe od obrazka) i wyśrodkowane.
Jak tego dokonać... ?
Chciałbym ustawić obraz w TImage po prawej.
Domyślnie dostępne jest jedynie po lewej (lub po lewej i góry - gdy pole Image jest większe od obrazka) i wyśrodkowane.
Jak tego dokonać... ?
Zainstaluj sobie komponenty Graphic32 - darmowe - wśród nich jest Image32, który pozwala dowolnie manewrować obrazkiem i do tego Image32 jest kilkanaście razy bardziej wydajny niż zwykłe Image
Artur napisał(a)
Zainstaluj sobie komponenty Graphic32 - darmowe - wśród nich jest Image32, który pozwala dowolnie manewrować obrazkiem i do tego Image32 jest kilkanaście razy bardziej wydajny niż zwykłe Image
No tak, ale to dodatkowy rozmiar pliku, bo dodatkowy komponent
Nie da się tego zrobić bez dodatkowych komponentów ?
Da sie poczytaj o copyrect
Oto mój kod na wykonanie tego zadania - powinien działać OK :
procedure TForm1.Button1Click(Sender: TObject);
var
b: TBitmap;
r, r1: TRect;
begin
b:=TBitmap.Create;
b.LoadFromFile('plik.bmp');
r.Left:=Image1.Width-b.Width;
r.Top:=0;
r.Right:=Image1.Width;
r.Bottom:=b.Height;
r1.Left:=0;
r1.Top:=0;
r1.Right:=b.Width
r1.Bottom:=b.Height;
Image1.Picture.Bitmap:=nil;
Image1.Picture.Bitmap.Width:=Image1.Width;
Image1.Picture.Bitmap.Height:=Image1.Height;
Image1.Picture.Bitmap.Canvas.CopyRect(r, b.Canvas, r1);
b.Free;
end;
{PIT} napisał(a)
Oto mój kod [..] powinien działać OK
OK. Dzięki [soczek]
Jest tylko mały problem. Transparent nie funkcjonuje poprawnie.
Jest białe tło na całym polu Image oraz obrazka, a gdy ustawię:
Image1.Picture.Bitmap.TransparentColor := clWhite;
to tylko obrazek ma białe pole (ale niepotrzebnie je ma...)
Da się coś z tym zrobić jeszcze ? ;)
Jeśli chcesz tylko zastąpić białe pole innym kolorem to przed CopyRect wpisz:
Image1.Picture.Bitmap.Canvas.Pen.Color:=clBlue; // tu podajesz kolor jaki chcesz
Image1.Picture.Bitmap.Canvas.Brush.Color:=clBlue; // ...i tutaj tez...
Image1.Picture.Bitmap.Canvas.Rectangle(0,0,Image1.Picture.Bitmap.Width, Image1.Picture.Bitmap.Height);
Extra, dzięki {PIT} [soczek]