![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | 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
|
|||
|
|||
|
Цитата:
Цитата:
я думал что нужно начальные и конечные коры передавать))) |