Здравствуйте, уважаемые мастера! У меня очень странная, на мой неопытный взгляд, ситуация. Надеюсь, поможете мне разобраться. Win7, D7.
Есть такая графическая библиотека Agg2D. К ней идёт документация
http://www.crossgl.com/aggpas/documentation/index.html и пример tagg2d_example02.zip
Этот пример в изначальном варианте отлично работает у меня. Вкратце содержание примера таково:
1. В FormCreate создаётся объект класса TAgg2D
2. В FormResize пристыковываем созданный объект к bitmap-у изображения, кинутого на форму, и если всё нормально, рисуем звёздочку:
procedure TForm1.FormResize(Sender: TObject);
begin
Image1.Picture.Bitmap.Width :=ClientWidth;
Image1.Picture.Bitmap.Height:=ClientHeight;
if VG.Attach(Image1.Picture.Bitmap ) then
begin
VG.ClearAll(255 ,255 ,255 );
VG.LineWidth(10 );
VG.LineColor($32 ,$cd ,$32 );
VG.FillColor($ff ,$d7 ,$00 );
VG.Star(100 ,100 ,30 ,70 ,55 ,5 );
end;
end;
Теперь в чём проблема: рисование происходит только в одной функции, а при рисовании из других - игнорируется. Я не понимаю, почему такое возможно и отчего зависит.
Чтобы было понятнее, о чём я веду речь, приведу серию примеров:
Я добавляю на форму кнопку, и в обработчике нажатия пытаюсь дорисовать что-то: нет никакой реакции. Я пробовал и без Attach (так как он уже был произведён), так и с ним.
procedure TForm1.Button1Click(Sender: TObject);
begin
if VG.Attach(Image1.Picture.Bitmap ) then
begin
VG.Ellipse(120, 120, 20, 20);
end;
end;
Я тут подумал, что возможно он единожды рисует, а потом "забывается". Тогда я вписал в FormResize такие координаты:
VG.Star(Width div 2 ,100 ,30 ,70 ,55 ,5 );
Форму растянул - звёздочка переместилась. Значит перерисовывается...
Может по каким-то причинам рисует только из FormResize (хотя судя по документации это не так): убрал вообще FormResize, нажимаю на кнопку - рисуется мой эллипс! Вернул FormResize и приписал ещё одну строку:
VG.Star(Width div 2 ,100 ,30 ,70 ,55 ,5 );
VG.Ellipse(120, 120, 20, 20);
Эллипс рисуется поверх звёздочки..
Почему же он не рисуется, когда что-то уже нарисовано, при нажатии на кнопку?