Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2002.03.18;
Скачать: [xml.tar.bz2];

Вниз

Работа с графикой   Найти похожие ветки 

 
Alex500   (2002-03-02 13:54) [0]

Подскажите, как сделать так, чтобы в моей программе картинка большого размера отображалась частично в небольшом окне, и чтобы можно было ее просматривать, передвигая мышью картинку, наподобие того, как это сделано в ACDSee. Заранее спасибо.


 
Nikolay   (2002-03-02 14:44) [1]

обрабатывай onMouseDown и onMouseMove.


 
vbazik   (2002-03-02 16:14) [2]

1.Создаешь окно
2.Находишь положение мыши на основном окне
3. Определяешься с прямоугольником, который хочешь отображать
3. Копируешь посредством copyrect() из одного bitmap в другой


 
Набережных С.   (2002-03-02 20:18) [3]

Положи на форму TPanel, на нее - TImage.

var
StartPoint:TPoint;

procedure TForm1.FormCreate(Sender: TObject);
begin
Panel1.DoubleBuffered:=true;
end;

procedure TForm1.Image1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
if Button = mbLeft then
StartPoint:=Panel1.ScreenToClient(Image1.ClientToScreen(Point(x-Image1.Left,y-Image1.Top)));
end;

procedure TForm1.Image1MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
var
NewPoint:TPoint;
begin
if ssLeft in Shift then
begin
NewPoint:=Panel1.ScreenToClient(Image1.ClientToScreen(Point(x, y)));
with NewPoint do
if
(x < 0)or(x > Panel1.Width)or
(y < 0)or(y > Panel1.Height)
then
Exit;
Dec(NewPoint.x, StartPoint.x);
Dec(NewPoint.y, StartPoint.y);

if NewPoint.x > 0 then NewPoint.x:=0
else if NewPoint.x <(Panel1.Width - Image1.Width)then
NewPoint.x:= Panel1.Width - Image1.Width;

if NewPoint.y > 0 then NewPoint.y:=0
else if NewPoint.y <(Panel1.Height - Image1.Height)then
NewPoint.y:= Panel1.Height - Image1.Height;

with Image1, NewPoint do SetBounds(x, y, Width, Height);
end;
end;




Страницы: 1 вся ветка

Форум: "Основная";
Текущий архив: 2002.03.18;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.45 MB
Время: 0.008 c
1-57458
ARmaN
2002-03-01 12:56
2002.03.18
Сокеты


4-57550
Death
2002-01-18 21:03
2002.03.18
Дебаг...


6-57480
Malder
2002-01-04 00:55
2002.03.18
Странная ошибка в программе


3-57298
Chak
2002-02-19 00:09
2002.03.18
Как лучше добавлять запись в таблицу MSSQL?


1-57434
AndreyK
2002-03-03 13:33
2002.03.18
Срочно





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский