none
Elimdeki kod bloğunu User Control içerisine nasıl gömebilirim? RRS feed

  • Genel Tartışma

  • Merhabalar,

    Tüm projelerimde kullanmak için kendime basit bir tiff viewer yapmaya çalışıyorumda, şimdilik derme çatmada olsa birşeyler yaptım ve  bunu user control bileşenini kullanarak nasıl tek bir nesne haline dönüştürebilirim? Her defasında ayrı ayrı hiç uğraşmadan ekleyeceğim linkteki tüm kodları direkt içine nasıl gömebilirim, yardımcı olabilir misiniz?

    using DevExpress.XtraEditors;
    using DevExpress.XtraEditors.Controls;
    using System;
    using System.Collections.Generic;
    using System.Drawing;
    using System.Drawing.Imaging;
    using System.IO;
    using System.Linq;
    using System.Runtime.InteropServices;
    using System.Text;
    using System.Threading;
    using System.Threading.Tasks;
    using System.Windows.Forms;

    namespace WindowsFormsApplication10.Helpers
    {
        public static class ImageProcessing
        {
            private static Bitmap tiffImage { get; set; }
            private static Bitmap activeFrameImage { get; set; }         
            private static void panelClear(Form frm, FlowLayoutPanel flp)
            {
                try
                {
                    frm.Invoke((MethodInvoker)delegate ()
                    {
                        if (flp.Controls.Count >= 0)
                        {
                            List<Control> listControls = flp.Controls.Cast<Control>().ToList();
                            foreach (Control item in listControls)
                            {
                                if (item is PictureEdit)
                                    flp.Controls.Clear();
                            }
                        }
                        flp.Refresh();
                        flp.Update();                    
                    });
                }
                catch (Exception) { }
            }

            private static int FindPictureBoxIndex(FlowLayoutPanel flp, PictureEdit picture)
            {
                for (int i = 0; i < flp.Controls.Count; i++)
                {
                    PictureEdit target = flp.Controls[i] as PictureEdit;
                    if (picture == target)
                        return i;
                }
                return -1;
            }

            public static void getImageList(Form frm, FlowLayoutPanel flp, PictureEdit peViewer, ContextMenuStrip cms, string filePath)
            {
                try
                {                
                    if (File.Exists(filePath))
                    {
                        tiffImage = null;
                        activeFrameImage = null;
                        panelClear(frm, flp);                    
                        tiffImage = (Bitmap)Bitmap.FromFile(filePath);
                        Guid objGuid = tiffImage.FrameDimensionsList[0];
                        FrameDimension dimension = new FrameDimension(objGuid);
                        int noOfPages = tiffImage.GetFrameCount(dimension);
                        if (noOfPages>=0)
                        {
                            panelClear(frm, flp);
                            foreach (Guid guid in tiffImage.FrameDimensionsList)
                            {                            
                                for (int index = 0; index < noOfPages; index++)
                                {                               
                                    FrameDimension currentFrame = new FrameDimension(guid);
                                    tiffImage.SelectActiveFrame(currentFrame, index);
                                    activeFrameImage = new Bitmap(tiffImage, peViewer.Width, peViewer.Height);
                                    try
                                    {
                                        frm.Invoke((MethodInvoker)delegate ()
                                        { 
                                            PictureEdit pe = new PictureEdit();                                                                       
                                            pe.Width = pe.Height = 100;
                                            pe.Margin = new Padding(5);
                                            pe.AllowDrop = true;                                        
                                            //pe.EditValue = ByteImageConverter.ToByteArray(activeFrameImage, ImageFormat.Jpeg);
                                            //pe.Image = activeFrameImage;  
                                            pe.EditValue = activeFrameImage;                                       
                                            pe.Properties.SizeMode = DevExpress.XtraEditors.Controls.PictureSizeMode.Stretch;
                                            pe.Properties.BorderStyle = DevExpress.XtraEditors.Controls.BorderStyles.Simple;
                                            pe.Properties.Caption.Text = string.Format("{0}", index + 1);
                                            pe.Properties.Caption.Alignment = ContentAlignment.TopLeft;
                                            pe.Properties.Caption.Appearance.ForeColor = Color.Red;
                                            pe.Properties.Appearance.BorderColor = Color.Black;                                        
                                            pe.Properties.AppearanceFocused.BorderColor = Color.Red;
                                            pe.Properties.ShowMenu = false;
                                            pe.Properties.AllowDisposeImage = true;
                                            pe.Properties.ContextMenuStrip = cms;
                                            pe.Tag = index;                                       
                                            pe.Cursor = Cursors.Hand;                                        
                                            flp.Controls.Add(pe);                                        
                                            flp.Refresh();
                                            flp.Update();
                                            pe.Refresh();
                                            pe.Update();
                                           
                                            if (index == 0)                                      
                                                peViewer.EditValue = activeFrameImage;

                                            pe.MouseMove += (o, e) =>
                                            {
                                                if (e.Button == MouseButtons.Left)
                                                {
                                                    PictureEdit picture = o as PictureEdit;
                                                    picture.BorderStyle = DevExpress.XtraEditors.Controls.BorderStyles.Simple;
                                                    picture.DoDragDrop(picture, DragDropEffects.Move);
                                                }
                                            };
                                            pe.DragDrop += (o, e) =>
                                            {
                                                PictureEdit target = o as PictureEdit;
                                                if (target != null)
                                                {
                                                    int targetIndex = FindPictureBoxIndex(flp, target);
                                                    if (targetIndex != -1)
                                                    {
                                                        string pictureBoxFormat = typeof(PictureEdit).FullName;
                                                        if (e.Data.GetDataPresent(pictureBoxFormat))
                                                        {
                                                            PictureEdit source = e.Data.GetData(pictureBoxFormat) as PictureEdit;
                                                            int sourceIndex = FindPictureBoxIndex(flp, source);
                                                            if (targetIndex != -1)
                                                                flp.Controls.SetChildIndex(source, targetIndex);
                                                        }
                                                    }
                                                }
                                            };
                                            pe.DragEnter += (o, e) =>
                                            {
                                                e.Effect = DragDropEffects.Move;
                                            };
                                            //pe.Click += (o, e) =>
                                            //{
                                            //    frm.Invoke((MethodInvoker)delegate ()
                                            //    {
                                            //        try
                                            //        {
                                            //            if (flp.Controls.Count >= 0)
                                            //            {
                                            //                PictureEdit selectedImage = o as PictureEdit;
                                            //                //tiffImage.SelectActiveFrame(FrameDimension.Page, Convert.ToInt32(selectedImage.Tag));
                                            //                //activeFrameImage = new Bitmap(tiffImage, peViewer.Width, peViewer.Height);
                                            //                //peViewer.EditValue = activeFrameImage;

                                            //                Bitmap _tiffImage = (Bitmap)Bitmap.FromFile(filePath);
                                            //                Guid _objGuid = _tiffImage.FrameDimensionsList[0];
                                            //                FrameDimension _dimension = new FrameDimension(_objGuid);
                                            //                _tiffImage.SelectActiveFrame(_dimension, Convert.ToInt32(selectedImage.Tag));
                                            //                Bitmap _activeFrameImage = new Bitmap(_tiffImage, peViewer.Width, peViewer.Height);
                                            //                peViewer.EditValue = _activeFrameImage;
                                            //                _tiffImage.Dispose();
                                            //                _activeFrameImage = null;
                                            //            }
                                            //            else
                                            //            {
                                            //                panelClear(frm, flp);
                                            //                pe.Image.Dispose();
                                            //            }
                                            //        }
                                            //        catch (InvalidOperationException) { return; }
                                            //        catch (ExternalException) { return; }
                                            //        catch (ArgumentException) { return; }
                                            //        catch (Exception) { return; }
                                            //    });
                                            //};
                                            //pe.KeyDown += (o, e) =>
                                            //{
                                            //    frm.Invoke((MethodInvoker)delegate ()
                                            //    {
                                            //        try
                                            //        {
                                            //            if (flp.Controls.Count >= 0)
                                            //            {
                                            //                if (e.KeyCode == Keys.F3)
                                            //                {
                                            //                    PictureEdit selectedImage = o as PictureEdit;
                                            //                    tiffImage.SelectActiveFrame(FrameDimension.Page, Convert.ToInt32(selectedImage.Tag));
                                            //                    activeFrameImage = new Bitmap(tiffImage, peViewer.Width, peViewer.Height);
                                            //                    peViewer.EditValue = activeFrameImage;
                                            //                }
                                            //            }
                                            //            else
                                            //            {
                                            //                panelClear(frm, flp);
                                            //                pe.Image.Dispose();
                                            //            }
                                            //        }
                                            //        catch (InvalidOperationException) { return; }
                                            //        catch (ExternalException) { return; }
                                            //        catch (ArgumentException) { return; }
                                            //        catch (Exception) { return; }
                                            //    });
                                            //};
                                            pe.GotFocus += (o, e) =>
                                            {
                                                frm.Invoke((MethodInvoker)delegate ()
                                                {
                                                    try
                                                    {
                                                        if (flp.Controls.Count >= 0)
                                                        {
                                                            PictureEdit selectedImage = o as PictureEdit;   
                                                            Bitmap _tiffImage = (Bitmap)Bitmap.FromFile(filePath);
                                                            Guid _objGuid = _tiffImage.FrameDimensionsList[0];
                                                            FrameDimension _dimension = new FrameDimension(_objGuid);
                                                            _tiffImage.SelectActiveFrame(_dimension, Convert.ToInt32(selectedImage.Tag));
                                                            Bitmap _activeFrameImage = new Bitmap(_tiffImage, peViewer.Width, peViewer.Height);
                                                            peViewer.EditValue = _activeFrameImage;
                                                            _tiffImage.Dispose();
                                                            _activeFrameImage = null;
                                                        }
                                                        else
                                                        {
                                                            panelClear(frm, flp);
                                                            pe.Image.Dispose();
                                                        }
                                                    }
                                                    catch (InvalidOperationException) { return; }
                                                    catch (ExternalException) { return; }
                                                    catch (ArgumentException) { return; }
                                                    catch (Exception) { return; }
                                                });
                                            };
                                        });                                    
                                    }
                                    catch (InvalidOperationException) { return; }                                
                                }
                            }
                        }                    
                    }
                }
                catch (Exception) { return; }            
            }



            
           


        }
    }

    kullandığım class bu, diğer tüm şeyleri projeyle birlikte aşağıdaki linkten bakılabilir.
    12 Ekim 2016 Çarşamba 11:17

Tüm Yanıtlar