Вниз
Скачать: 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 вся ветка

Скачать: CL | DM;



Память: 0.46 MB
Время: 0.017 c
9-86607
-=Prior=-
2002-07-31 11:23
2003.01.27
Мастаки ответте мию сию!


1-86874
?-
2003-01-19 02:34
2003.01.27
Что бы это значило?


1-86747
laser
2003-01-17 15:05
2003.01.27
помогите пожалуйста разобрать (что-то не работает)


14-87097
ACR
2003-01-09 13:56
2003.01.27
Установка пакетов ( dpk )


14-87037
Val
2003-01-10 10:51
2003.01.27
Отказ от БДЕ




   Наверх