Форум: "Основная";
Текущий архив: 2003.01.27;
Скачать: [xml.tar.bz2];
ВнизВиртуальный 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;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.01 c