2011-10-06 101 views
2

我有一個資源文件(以.png格式),其中包含幾個圖像。它們的大小和間隔都應該根據其偏移而相對容易地調用。C#picturebox加載圖像的偏移量

我可以調整picturebox的大小以適合一張圖片,但是,我不知道如何根據偏移量來加載圖像,所以我總是隻能得到左上角的圖像。

我真的很喜歡使用任何方法,但一直沒有能夠出現在我的搜索有用的東西 - 因爲我真的不知道要準確搜索什麼。

回答

6

假設你的PNG圖像imgwidth像素寬和ñ水平的圖像組成,你可以試試這個:

Image imgsrc = Image.FromFile("...."); // your PNG file 
Image imgdst = new Bitmap(imgwidth/n, imgsrc.Height); 
using (Graphics gr = Graphics.FromImage(imgdst)) 
{ 
    gr.DrawImage(imgsrc, 
     new RectangleF(0, 0, imgdst.Width, imgdst.Height), 
     new RectangleF(imgindex * imgwidth/n, 0, imgwidth/n, imgsrc.Height), 
     GraphicsUnit.Pixel); 
} 

的想法是創建一個新的圖像(imgdst)和借鑑它你需要的原始圖像部分。
隨着新的形象,你可以做你喜歡什麼,甚至畫在一個picturebox。

0

這聽起來像你正在做一些像精靈一樣的東西;您只需加載一個圖像,然後移動「查看端口」以顯示不同的圖像。

如果是這樣的話,您將無法通過股票PictureBox類來做到這一點。您可以控制尺寸,但不能定位。我認爲你必須做的是通過代碼加載圖像,並基於該圖像的必要部分(使用GDI +)創建新圖像。

7

您可以將PictureBox放在Panel中,使用面板作爲您的視口。確保面板的AutoScroll屬性是false,因此不會出現滾動條。然後,加載PictureBox中的圖像,並將其相對於Panel的位置進行設置,以便只顯示您想要顯示的區域。

pictureBox1.SizeMode = PictureBoxSizeMode.AutoSize; 
pictureBox1.Image = Image.FromFile(@"C:\MyPicture.png"); 
pictureBox1.Location = new Point(-100, -100); 
+0

我的第一個想法是存儲原始圖像並創建一個副本,但這樣更好,謝謝。 –

+0

這是個好主意 –

0

如果你只是想顯示爲用戶提供圖像,可以爲圖像添加到一個標籤,然後設置圖像的對齊屬性,只要你喜歡。