Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 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.024 c
1-1085776423
white
2004-05-29 00:33
2004.06.13
Как увеличить переменную TDate на нужное кол-во дней?


4-1084008905
pantel
2004-05-08 13:35
2004.06.13
Работа с ресурсами в сжатых EXE


14-1085176317
lak
2004-05-22 01:51
2004.06.13
http://www.artlebedev.ru


14-1085679386
Mad Dancer
2004-05-27 21:36
2004.06.13
Где можно купить фильмы без русского перевода?


1-1086162955
Вованчик
2004-06-02 11:55
2004.06.13
ссылка на компонент





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский