Главная страница
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.022 c
14-87127
grad23
2003-01-10 03:40
2003.01.27
нужен пароль, прога на DELPHI


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


1-86834
gez
2003-01-18 15:32
2003.01.27
Помогите с гридом


6-87007
Troll
2002-12-01 19:58
2003.01.27
что с ВебМонием???


1-86955
ivansv
2003-01-16 05:17
2003.01.27
Как узнать число видимых строк в TRichEdit