예제 #1
0
        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)";
        }
예제 #2
0
        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();
        }