Рисование на прозрачных битмапах Delphi

Рейтинг: 0Ответов: 1Опубликовано: 01.02.2015

При изменении битмапа (отрисовке на нем фигуры) и выводе его на экран новая фигура получается обрезанной. Прошу помочь разобраться, с чем это связанно.

P.S. Вместо желтого эллипса на Image отображается только его часть, которая поместилась в область зеленого квадрата.

procedure TForm1.FormCreate(Sender: TObject);

begin

  with Image1 do

  begin

  Canvas.Brush.Color:=clWhite;

  Canvas.Rectangle(0,0,300,300);

  Canvas.Brush.Color:=clRed;

  Canvas.Ellipse(50,50,150,150);

  end;

  b:=tbitmap.Create;

  b.Width:=300;

  b.Height:=300;

  b.TransparentColor:=clWhite;

  b.Transparent:=true;

  b.TransparentMode:=tmfixed;

  b.Canvas.Brush.Color:=clWhite;

  b.Canvas.Rectangle(0,0,300,300);

  b.Canvas.Brush.Color:=clGreen;

  b.Canvas.Rectangle(111,111,222,222);

  Image1.Canvas.Draw(0,0,b);

end;

procedure TForm1.Image1Click(Sender: TObject);

begin

   b.Canvas. brush.color:=clYellow;

   b.Canvas.Ellipse(0,0, 190,190);

  Image1.Canvas.Draw(0,0,b);

end;

Ответы

▲ 1

Скопировал ваш код, все работает. Попробуйте создать новый проект.

Как у вас b объявлено?

TForm1 = class(TForm)
  img1: TImage;
  procedure FormCreate(Sender: TObject);
  procedure img1Click(Sender: TObject);
  procedure FormDestroy(Sender: TObject);
private
  b: TBitmap;
...

Все работает