2013-08-16 11 views
9

Czy istnieje prosty i funkcjonalny sposób powiększania obrazu w ramce graficznej, w tym paski przewijania?C#: Prosty i funkcjonalny sposób powiększania obrazków z obrazka za pomocą pasków przewijania

W tej chwili używam ramki graficznej w panelu z włączonym automatycznym przewijaniem. Aby powiększyć, powiększam obraz i przesuwaj go za pomocą pasków przewijania na panelu. Problem polega na tym, że zachowuje się dziwnie. Na przykład: jeśli powiększysz do znacznej odległości, margines między górną i lewą krawędzią formularza i obrazem staje się coraz większy.

To jest metoda powiększania. Mam go od here.

private void ZoomInOut(bool zoom) 
    { 
     //Zoom ratio by which the images will be zoomed by default 
     int zoomRatio = 10; 
     //Set the zoomed width and height 
     int widthZoom = pictureBox_viewer.Width * zoomRatio/100; 
     int heightZoom = pictureBox_viewer.Height * zoomRatio/100; 
     //zoom = true --> zoom in 
     //zoom = false --> zoom out 
     if (!zoom) 
     { 
      widthZoom *= -1; 
      heightZoom *= -1; 
     } 
     //Add the width and height to the picture box dimensions 
     pictureBox_viewer.Width += widthZoom; 
     pictureBox_viewer.Height += heightZoom; 

    } 

Każda pomoc jest doceniana.

Z góry dziękuję.

Marco

EDIT: Dwa screeny czyli mniej i powiększonego (16 razy) obrazu. Zwróć uwagę na margines między górną krawędzią obrazu a górną krawędzią formularza. UnzoomedImageZoomedImage

+0

prosta odpowiedź: Nie! Obecny sposób, w jaki korzystasz, jest najlepszym wyborem. Naprawdę nie mam problemu z tym, co opisałeś w swoim pytaniu. Myślę, że zrzut ekranu byłby dobry w tym przypadku. –

+0

@KingKing Dodałem dwa zrzuty ekranu. –

+0

To bardzo dziwne, chyba że istnieje jakiś kod zmieniający "Top" i "Left" z twojego "PictureBox". Powinieneś sam sprawdzić cały kod, aby opublikować go tutaj. –

Odpowiedz

3

Myślę, że lepiej jest powiększyć (przeskalować) obraz, a nie ramkę graficzną. Spójrz na ten artykuł - http://www.codeproject.com/Articles/21097/PictureBox-Zoom

And

How to zoom in&out an image in c#

+0

OK. A kiedy zmieniam skalę obrazu, jak mogę go dopasować w formie? Muszę zaktualizować rozmiar ramki graficznej, która prowadzi mnie do mojego pierwszego problemu. Czy mam rację? :) –

+0

Kiedy obraz jest przeskalowany, co jest wymagane? PAN (w którym użytkownik może przewijać obraz za pomocą przeciągnięcia) lub paski przewijania w skrzynce obrazkowej? –

+0

A jaki jest problem z drugim obrazem? Wygląda na to, że jest powiększony i wygląda dobrze. –

Powiązane problemy