![]() |
|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
![]() Добрый день
такая вот проблема, сжимается изображение при перемещении по image, изображение хранится в bitmap'e, картинку перемещаю через copyrect, в чем косяк? Код:
bm:tbitmap; function hkoef:real; var k:real; begin k:=form1.imgImage.Width/bm.Width; hkoef:=round(k*100)/100; end; procedure TForm1.sbHorScroll(Sender: TObject; ScrollCode: TScrollCode; var ScrollPos: Integer); var k:real; pos:integer; Rect,rect1:Trect; begin if hkoef<1 then begin k:=form1.sbHor.Position/form1.sbHor.Max; k:=round(k*100)/100; pos:=round(bm.Width*k); if (pos+form1.imgImage.Width)<=bm.Width then begin Rect:=Bounds(0,0,form1.imgImage.Width,form1.imgImage.Height); rect1:=Bounds(pos,0,form1.imgImage.Width+pos,form1.imgImage.Height); form1.imgImage.Canvas.CopyRect(rect,bm.Canvas,rect1); end; end; end; Пример: http://hostingkartinok.com/show-imag...3b321cb6d4be24 |
#2
|
||||
|
||||
![]() Процедура выглядит так: CopyRect(const Dest: TRect; Canvas: TCanvas;
const Source: TRect), тоесть Dest - область назначения, а Source - область источника. Значит, нужно переставить области местами, ведь Цитата:
Это во-первых. Во-вторых, Цитата:
PS. Я бы советовал использовать в данном случае (когда не нужно масштабирования) процедуру Canvas.Draw(X,Y:integer; Graphic:TGraphic) |
#3
|
|||
|
|||
![]() Цитата:
Цитата:
я думал что нужно начальные и конечные коры передавать))) |