Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.12.19;
Скачать: CL | DM;

Вниз

рисование на TCanvas из DLL   Найти похожие ветки 

 
Gloster ©   (2004-11-30 20:02) [0]

Пытаюсь рисовать на канве Image.Canvas из DLL, например, эллипс. Один раз рисует, при попытке нарисовать второй раз и более ... посылает! Как обойти?! Очень нужно рисовать на канве именно из динам. библиотеки!!! Спасибо.


 
Алхимик ©   (2004-11-30 20:36) [1]

В 17- строке ошибка.
В смысле код давай.


 
Gloster ©   (2004-11-30 20:53) [2]

Код примерно такой: в основной программе такие две процедуры. На Button1Click рисуется эллипс. На Button2Click рисуется эллипс из процедуры DLL (см. ниже). Штука в следующем: если Вы щелкаете по Button1, рисуется эллипс, если по Button2 --- возникает ошибка. И наоборот!!

procedure RisEll(x1,y1: Integer; CAnvas: TCanvas); external "RisEllips.dll";
procedure TForm1.Button1Click(Sender: TObject);
var x1,x2,y1,y2: Integer;
begin
x1:=StrToInt(Edit1.Text);
y1:=StrToInt(Edit2.Text);
x2:=x1+100;
y2:=y1+100;
Form1.Image1.Canvas.Pen.Color:=clRed;
Form1.Image1.Canvas.Ellipse(x1,y1,x2,y2);
end;

procedure TForm1.Button2Click(Sender: TObject);
var x1,y1,i,j: Integer;
begin
x1:=StrToInt(Edit1.Text);
y1:=StrToInt(Edit2.Text);
for i:=0 to 1 do
begin
 RisEll(x1,y1,Form1.Image1.Canvas);
end;
end;

procedure RisEll(x1,y1: Integer; Canvas: TCanvas);
var x2,y2: Integer;
begin
x2:=x1+100;
y2:=y1+230;
Canvas.Pen.Color:=clGreen;
Canvas.Pen.Width:=12;
Canvas.Ellipse(x1,y1,x2,y2);

end;



 
Алхимик ©   (2004-11-30 23:50) [3]

Одним из модулей, входящих в стандартную библиотеку, является менеджер динамической памяти. Он используется не только при явных операциях с динамической памятью, но также при создании объектов, при работе со строками и динамическими массивами.

http://softwarer.ru/packages.html#Memory


 
dimaxx ©   (2004-12-01 01:19) [4]

Господа, а не проще ли передавать HDC (TCanvas.Handle) и не париться с передачей ссылки на класс? Благо рисование на канве растет из API. А в API как раз применяется HDC.


 
Gloster ©   (2004-12-01 19:02) [5]

Алхимику: Спасибо за информативную ссылку, вроде разобрался!
dimaxx: Передавать HDC не проще, я пробовал, перед тем как обратиться на Форум. Не работает 100%!!!!


 
Gloster ©   (2004-12-02 17:14) [6]

Господа! Все равно ничего не работает, вроде теоретически все понятно (см. статью), но при попытке реализовать рекомендации по использованию ShareMem все валится! Работа с bplинами мне не нравится --- не исключено, что dll, которую я пишу, пригодится мне для Cи! Я понял две вещи: либо не связываться с VCL, либо с Delphi!
Кстати, никто не пробовал написать свой менеджер памяти?!



Страницы: 1 вся ветка

Текущий архив: 2004.12.19;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.024 c
1-1101946013
Змей
2004-12-02 03:06
2004.12.19
listview


11-1084265043
Bez
2004-05-11 12:44
2004.12.19
OnResize


14-1101307465
Chlavik
2004-11-24 17:44
2004.12.19
Новый раздел форума...


6-1097261876
Wish
2004-10-08 22:57
2004.12.19
Как осуществить поддержку прокси в своей программе?


1-1102086456
Gek1
2004-12-03 18:07
2004.12.19
Dword в Hex