private void ImgPanel_MouseClick(object sender, MouseEventArgs e) { ImagePanelWithDetails selectedPanel = ((ImagePanelWithDetails)sender); foreach (ImagePanelWithDetails imgPanel in panel1.Controls.OfType <ImagePanelWithDetails>()) { imgPanel.SetSelected(false); } pictureBox1.Image = selectedPanel.pictureBox.Image; selectedPanel.SetSelected(true); selected = panel1.Controls.GetChildIndex(selectedPanel); label3.Text = "Texture Index: " + selected + "\nDimensions: " + ghg.texWidths[selected] + "x" + ghg.texHeights[selected] + "\nDDS file size: " + ghg.texSizes[selected] + " bytes (" + ghg.texSizes[selected] / 1024 + " KB)"; }
public void LoadTexturesFromGhg(string path) { currentGhgPath = path; GhgManager.LoadModel(path, out ghg); panel1.Controls.Clear(); for (int i = 0; i < ghg.texCount; i++) { using (Stream s = new MemoryStream(ghg.texData[i])) { using (Pfim.IImage img = Pfim.Pfim.FromStream(s)) { GCHandle handle = GCHandle.Alloc(img.Data, GCHandleType.Pinned); IntPtr data = Marshal.UnsafeAddrOfPinnedArrayElement(img.Data, 0); Bitmap bitmap = null; if (img.Format == Pfim.ImageFormat.Rgb24) { bitmap = new Bitmap(img.Width, img.Height, img.Stride, System.Drawing.Imaging.PixelFormat.Format24bppRgb, data); } else if (img.Format == Pfim.ImageFormat.Rgba32) { bitmap = new Bitmap(img.Width, img.Height, img.Stride, System.Drawing.Imaging.PixelFormat.Format32bppArgb, data); } ImagePanelWithDetails imgPanel = new ImagePanelWithDetails(); imgPanel.pictureBox.Image = bitmap; imgPanel.label.Text = "Texture #" + i + "\nDimensions: " + ghg.texWidths[i] + "x" + ghg.texHeights[i]; imgPanel.label.MouseClick += Details_MouseClick; imgPanel.pictureBox.MouseClick += Details_MouseClick; imgPanel.Location = new Point(4, 4 + i * 65); imgPanel.MouseClick += ImgPanel_MouseClick; panel1.Controls.Add(imgPanel); handle.Free(); } } } imgDetailsPanel.Hide(); }