Текущий архив: 2004.06.13;
Скачать: CL | DM;
ВнизDelphiX, TPictureCollectionItem, TPicture и TCanvas Найти похожие ветки
← →
Delphi_X_akep (2004-02-17 16:44) [0]DelphiX. Есть переменная класса TImageSprite и в ней картинка.
Можно ли нарисовать на этой картинке что нибудь (изменить ее),
используя TCanvas? При использовании этого кода:Sprite.Image.Picture.Bitmap.Canvas.LineTo(10,10);
картинка становится пустой.
И вообще возможно ли изменять картинку в программе,
находящуюся в классе TPicture (Рисовать линии, точки и т. п.)?
← →
jab~ (2004-02-17 16:57) [1]Я думаю можно рисовать... Для этого есть функция BitBlt()
BOOL BitBlt(
HDC hdcDest, // handle to destination device context
int nXDest, // x-coordinate of destination rectangle"s upper-left corner
int nYDest, // y-coordinate of destination rectangle"s upper-left corner
int nWidth, // width of destination rectangle
int nHeight, // height of destination rectangle
HDC hdcSrc, // handle to source device context
int nXSrc, // x-coordinate of source rectangle"s upper-left corner
int nYSrc, // y-coordinate of source rectangle"s upper-left corner
DWORD dwRop // raster operation code
);
Типа из одной картинки рисует на другой...
Вот кусочик того как я использовал эту функцию у себя:
BitBlt(b2.Canvas.Handle,0,0,w,h,Form1.Canvas.Handle,MonthCalendar1.Left,MonthCalendar1.Top+30,SRCCOPY);
где
b2:TBitmap;
w,h:Integer;
Тоесть я с канваса формы где у меня расположен календарь, снимал изображение и помещал его в битмап. Код проверен на 100% работоспособен.
Наверно так с имыдж листами можно (не пробовал).
← →
m-AAA-d © (2004-02-17 16:59) [2]вот пример того как я на Image: TPictureCollectionItem рисовал картинку.
var rsrc, rdst: TRect;
... // Заполняем rdst и rsrc нужными нам значениями
FDXImageList.Items[FDXImageList.Items.Count-1].
Picture.Bitmap.Canvas.CopyRect(rdst,
FDXImageList.Items.Find("Fonts").Picture.Bitmap.Canvas,
rsrc);
← →
Delphi_X_akep (2004-02-17 18:10) [3]Нет, ну я вот например хочу поверх картинки в
ImageList нарисовать другую, в TBitmap;
Вот код:var
c : TBitmap;
rsrc, rdst: TRect;
begin
c := TBitmap.Create;
c.LoadFromFile("c:\file.bmp");
rdst := rect(1,1,1,1);
rsrc := rect(1,1,1,1);
ImageList.Items.Find("pic1").Picture.Bitmap.
Canvas.CopyRect(rdst, c.Canvas,rsrc);
c.free;
Но картинка в ImageList опять становиться пустой.
← →
m-AAA-d © (2004-02-18 15:50) [4]значит так, попробуй следующее:
- послеc.free
добавьImageList.Items ... Bitmap.SaveToFile("name.bmp");
и посмотри сохраненный рисунок - это для контроля действий
- а второе что мне кажется более вероятным: когда ты указываешь параметры дляrsrc
иrdst
- это же в пикселях, то есть у тебя получается копирование всего одного пикселя. неудивительно что не заметно. :)
Страницы: 1 вся ветка
Текущий архив: 2004.06.13;
Скачать: CL | DM;
Память: 0.45 MB
Время: 0.032 c