![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Работа с 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