Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Игры";
Текущий архив: 2004.06.13;
Скачать: [xml.tar.bz2];

Вниз

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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.04 c
1-1085863581
S4nya
2004-05-30 00:46
2004.06.13
Алгоритм


8-1079934544
INext
2004-03-22 08:49
2004.06.13
Прозрачный цвет в OpenGL


4-1084053583
Мыш
2004-05-09 01:59
2004.06.13
получение иконки не работает


14-1085398591
Sanek_metaller
2004-05-24 15:36
2004.06.13
Опять Internal Server Error 500


1-1085726881
errorr
2004-05-28 10:48
2004.06.13
Галочки в stringgrid





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский