Главная страница
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.027 c
3-1100690986
Dionnis
2004-11-17 14:29
2004.12.19
Индексы


14-1101463912
MBo
2004-11-26 13:11
2004.12.19
Пятничные задачи. Очередные проблемы Васи Пупкина


3-1100498654
S@lik
2004-11-15 09:04
2004.12.19
Query


3-1100885936
Fin
2004-11-19 20:38
2004.12.19
MS Sql server под XP


4-1098960284
MetalFan
2004-10-28 14:44
2004.12.19
Узнать данные по сессии CD