![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Проблемы с сохранением рисунков [D5, Win95/98]
Magic © (2003-01-20 14:13:00)Вот это сообщение появляется при прохождении отмеченной строки:
EInvalidOperation: "Canvas does not allow drawing"
constructor TBall.Create(Canv: TCanvas; cX, cY, Rad: integer);
begin
inherited Create(Canv);
Radius:=Rad;
X:=cX-Rad;
Y:=cY-Rad;
Width:=cX+Rad-X;
Height:=cY+Rad-Y;
Under:=TCanvas.Create;
Visible:=TRUE
end;
procedure TBall.Draw;
begin
case Visible of
TRUE: begin
Under.CopyRect(Rect(X,Y,X+Width,Y+Height),Canvas,Rect(0,0,Width,Height));
Canvas.Ellipse(X,Y,X+Width,Y+Width);
end;
FALSE:begin
Canvas.CopyRect(Rect(0,0,Width,Height),Under,Rect(X,Y,X+Width,Y+Height))
end
end
end;
Почему? Догадка такая, что это абстрактный тип...
Тогда каким лучше пользоваться?
Magic (2003-01-22 11:22:00) [1]см
Magic (2003-01-22 10:44:00) [2]Он сам себя рисует: Canvas.Ellipse(...);
Но перед тем как мне нарисовать его, мне нужно сохранить под ним рисунок, чтобы потом восстановить. Я пытаюсь это сделать CopyRect"ом, но.... Все плохо:((
Skier (2003-01-20 15:52:00) [3]>Magic
Дело в том что канве нужно задать контекст устройства для
того чтобы можно было рисовать
Set Handle to the HDC for the device context the canvas must draw into.(from Help),
А т.к. у тебя TBall не оконный компонент, то этот контекст
тебе взять нельзя (имею в виду от TBall-а). (см. API ф-ию GetDC(...)) И ввообще не понятно, как ты собираешься использовать
отрисовку , если компонент невизуальный. Поясни, зачем ты рисуешь, т.е. как планируешь это дальше использовать и для чего ?
Magic (2003-01-20 15:44:00) [4]TBall - TVisualObject - TObject
В общем, мой собственный клас.
Skier (2003-01-20 15:36:00) [5]>Magic
От какого класса наследуется TBall ?
Magic (2003-01-20 15:25:00) [6]Пробовал - тоже самое:(((
alxx (2003-01-20 14:18:00) [7]Похоже канвас ни к чему не прикреплен. Можно попробовать TBitmap или TMetaFile.