Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Копирование картинки непопиксельно, а одним махом


Franzy ©   (2009-07-24 14:46:00) 

Подскажите, чем можно заменить следующий код (копируется канвас формы во временный битмап):

var p : TPicture;
   i,j: longint;

  p:=TPicture.Create;
  p.Bitmap.Width:=ClientWidth;
  p.BitMap.Height:=clientHeight;
  for i:=1 to ClientWidth do
    for j:=1 to ClientHeight do
       p.Bitmap.canvas.Pixels[i,j]:=form1.canvas.Pixels[i,j];


abun   (2009-08-03 11:46:00) [1]

попробовать метод Assign - это не моможет разве?
т.е. что-то в роде

...

var bmp:tbitmap;

...

 bmp:=tbitmap.Create;
 bmp.Canvas.Assign(form1.Canvas);

 ...

 bmp.free;

...


CSS   (2009-08-02 04:34:00) [2]

Попробуйте просто делать скриншот экрана... =))


Игорь Шевченко   (2009-07-24 17:39:00) [3]


> Что-то мне подсказывает, что CopyRect - это обертка для
> этой функции


Что-то тебя обманывает, CopyRect обертка для StretchBlt


antonn   (2009-07-24 17:05:00) [4]


> Franzy   (24.07.09 15:08) [3]
>
>
> > CopyRect ?
>
>
> У TPicture нет такого метода, это метод TCanvas.

зато он есть у TPicture.bitmap


Franzy   (2009-07-24 16:37:00) [5]


> GetFormImage


Не работает, выдает пустое серое окно. Вероятно, потому что у меня там опенджиэлем картинка нарисована. CopyRect  нормально картинку сохраняет.


Хитрий Лис   (2009-07-24 15:34:00) [6]

Какая гадость... всё гораздо проще
bitmap := GetFormImage();


Franzy   (2009-07-24 15:31:00) [7]


> Windows.BitBlt


Что-то мне подсказывает, что CopyRect - это обертка для этой функции. Сделал с ней, ощутимо быстрей скриншот делается :)


stas   (2009-07-24 15:24:00) [8]

Franzy   (24.07.09 15:18) [6]

Windows.BitBlt
Windows SDK


Franzy   (2009-07-24 15:18:00) [9]


> BitBlt


Что это? В справке нет.


Franzy   (2009-07-24 15:17:00) [10]

Пардон, торможу, у Tpicture есть TBitmap, у которого уже есть TCanvas :)


Игорь Шевченко   (2009-07-24 15:14:00) [11]


> Подскажите, чем можно заменить следующий код


BitBlt


Franzy   (2009-07-24 15:08:00) [12]


> CopyRect ?


У TPicture нет такого метода, это метод TCanvas.


Palladin   (2009-07-24 14:52:00) [13]

ну можно добавить

If p.Bitmap.canvas.Pixels[i,j]<>form1.canvas.Pixels[i,j] Then
  p.Bitmap.canvas.Pixels[i,j]:=form1.canvas.Pixels[i,j];

)


stas   (2009-07-24 14:50:00) [14]

CopyRect ?


Наверх

Титульная страница Поиск, карта сайта Написать письмо