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

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

Работа с Bitmap [D5, D6, D7, WinME, WinXP]


Ig ©   (2004-01-25 14:14:00) 

Как в рисунке выделить например 5-ю часть, и вставить ее в компонент Image?


Ig   (2004-01-26 00:28:00) [1]

Вроде также, но все равно спасибо


Mihey   (2004-01-25 23:48:00) [2]

По-моему DoubleBuffered загружает, попробуй без него. С DobleBuffered работает чуток медленнее (иногда это не заметно), но без мерцания.


Ig   (2004-01-25 20:25:00) [3]

Ошибочка вышла, все работает, Mihey © большое тебе спасибо! :)
З.Ы. Ксати опять-же при быстром нажатии на кнопку, загрузка процессора примерно 15-20%, это нормально? Уменьшить нельзя?


Ig   (2004-01-25 20:07:00) [4]

>поставить DoubleBuffered = True у формы

!!! :)

>лучше вместо CopyRect использовать BitBlt

Так, правильно?

procedure TForm1.Btn1Click(Sender: TObject);
Var
 DRect : TRect;
begin
 DRect := Rect (300,300,400,600);
 BitBlt(Img2.Picture.Bitmap.Canvas.Handle, DRect.Left,
 DRect.Top, DRect.Right-DRect.Left, DRect.Bottom-DRect.Top,
 Img1.Canvas.Handle, DRect.Left, DRect.Top, SrcCopy);
end;


Не сработало :(


Mihey   (2004-01-25 19:40:00) [5]

Самое простое - поставить DoubleBuffered = True у формы. Но ещё лучше вместо CopyRect использовать BitBlt:

BitBlt(Img2.Picture.Bitmap.Canvas.Handle, DRect.Left, DRect.Top, DRect.Right-DRect.Left, DRect.Bottom-DRect.Top, Img1.Canvas.Handle, DRect.Left, DRect.Top, SrcCopy);


Ig   (2004-01-25 19:07:00) [6]

to Mihey ©   (25.01.04 18:43) [3]

Все пошло, большое спасибо, но появился другой вопрос. Я к примеру вставляю этот код в OnClick, при быстром нажатии появляется постороннее мерцание. Можно-ли как-то это убрать?

P.S. Еще раз спасибо! :)


Mihey   (2004-01-25 18:43:00) [7]

Видать Img2.Picture не создан. Попробуй просто - загрузи туда файл, а потом выполни свой код. Если всё получится правильно, то значит это так.


Ig   (2004-01-25 16:35:00) [8]

Пробовал так :
...
Var
 DRect : TRect;
begin
 DRect := Rect (0,0,20,30);
 Img2.Picture.Bitmap.Canvas.CopyRect(DRect,Img1.Canvas,DRect);
end;


не получается :(
Подскажите пожалуйста, как надо делать!


MBo   (2004-01-25 14:20:00) [9]

TCanvas.Copyrect
или
BitBlt


Наверх

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