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

Вниз

Виртуальный Canvas (полотно)   Найти похожие ветки 

 
Сатир ©   (2003-01-17 18:00) [0]

Уважаемые мастера!
Поскажите, пожалуйста, как можно создать виртуальный сабж.
Данный объект требуется для хранения в памяти изображения (напр., jpeg-картинки), из частей которого формируется другое - реальное.
Вот кусок кода:
var Canvas:TCanvas;
Dest,Source:TRect;
begin
Canvas:=TCanvas.Create;
try
Canvas.Draw(0,0,Skin.Picture.Graphic);<-вот здесь полюётся компилятор:(((
//TopLeft
Source:=Rect(0,0,EdgeTopLeft.Width,EdgeTopLeft.Height);
Dest:=Source;
can.CopyRect(Dest,Canvas,Source);
finally
Canvas.Free;
end;
end;


 
gsu ©   (2003-01-17 18:40) [1]

>> Данный объект требуется для хранения в памяти изображения
используй TBitmap
>> вот здесь полюётся компилятор
procedure Draw(X, Y: Integer; Graphic: TGraphic)


 
Сатир ©   (2003-01-17 18:44) [2]

Всем спасибо
Уже догадался сам.
Нужно создавать экземпляр не TCanvas, а TBitmap, а уже его полотно и использовать.
Вот исправленный код, если кому интересно
procedure SSkinBorder.PaintSkin(can: TCanvas; var r: TRect);
var Dest,Source:TRect;
BitMap:TBitMap;
begin
BitMap:=TBitMap.Create;
With Bitmap do
try
Canvas.Draw(0,0,Skin.Picture.Graphic);
//TopLeft
Source:=Rect(0,0,EdgeTopLeft.Width,EdgeTopLeft.Height);
Dest:=Source;
can.CopyRect(Dest,Canvas,Source);
finally
BitMap.Free;
end;
end;


 
Сатир ©   (2003-01-17 18:47) [3]

2gsu © (17.01.03 18:40)
и тебе спасибо,
зря, что перед тем как отвечать, не обновил страницу:)


 
gsu ©   (2003-01-17 18:54) [4]

(-:|~


 
Сатир ©   (2003-01-17 20:01) [5]

ладно, раз пошла такая пьянка, тогда скажите мне, пожалуйста, почему первый код рисует на кавасе, а второй - увы:(
Первый код:
procedure SSkinBorder.PaintSkin(can: TCanvas; var r: TRect);
var Dest,Source:TRect;
BitMap:TBitMap;
begin
BitMap:=TBitMap.Create;
With Bitmap do
try
Can.Draw(0,0,Skin.Picture.Graphic);
...


Второй код:
procedure SSkinBorder.PaintSkin(can: TCanvas; var r: TRect);
var Dest,Source:TRect;
BitMap:TBitMap;
begin
BitMap:=TBitMap.Create;
With Bitmap do
try
Canvas.Draw(0,0,Skin.Picture.Graphic);
//TopLeft
Source:=Rect(0,0,20,20);
can.CopyRect(Source,Canvas,Source);
...


 
gsu ©   (2003-01-17 20:17) [6]

в 1 коде ты вообще bitmap не используешь !!!
а во 2 создаешь, но не задаешь размеры Bitmap


 
Сатир ©   (2003-01-17 20:25) [7]

2gsu © (17.01.03 20:17)
спасибо



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

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

Наверх




Память: 0.48 MB
Время: 0.024 c
7-87153
Blackmon
2002-11-13 23:08
2003.01.27
Как запретить Ctrl+Esc


1-86748
Junior
2003-01-17 15:26
2003.01.27
Есть ListBox, в нем заполненые поля, как вызвать PopupMenu


1-86870
Master(self)
2003-01-20 06:39
2003.01.27
Формат архивов


3-86640
Stas
2002-12-24 09:21
2003.01.27
ADO и ACCESS2000


6-87016
andy_inc
2002-11-28 12:49
2003.01.27
Вызов формы