网站导航免费论文 原创论文 论文搜索 原创论文 网学软件 学术大家 资料中心 会员中心 问题解答 原创论文 大学论文导航 设计下载 最新论文 下载排行 原创论文 论文源代码
返回网学首页
网学联系
最新论文 推荐专题 热门论文 素材专题
当前位置: 网学 > 编程文档 > ASP.net > 正文

图象显示和翻转控件

来源:http://myeducs.cn 联系QQ:点击这里给我发消息 作者: 用户投稿 来源: 网络 发布时间: 14/02/25

【编者按】网学网ASP.net频道为大家收集整理了“图象显示和翻转控件“提供大家参考,希望对大家有所帮助!

using System;
using System.Collections;
using System.ComponentModel;
using System.Drawing;
using System.Data;
using System.Windows.Forms;

namespace ImageZoomer
{
    /// <summary>
    ///
    /// </summary>
    
    //枚举类型定义,定义图象的四种翻转方式
    public enum FlipModeStyle
    {
        NoFlip=0,//不翻转
        FlipX=1,//水平翻转
        FlipY=2,//垂直翻转
        FlipXY=3//水平垂直翻转
    }

    //事件数据类定义,报告图象的显示尺寸
    public class DisplaySizeChangedEventArgs:System.EventArgs
    {
        public int Width;
        public int Height;
        public DisplaySizeChangedEventArgs()
        {
        }
    }

    //事件代表的声明
    public delegate void DisplaySizeChangedEventHandler(object sender,DisplaySizeChangedEventArgs e);

    //用户自定义控件类
    public class ImageZoomerControl : System.Windows.Forms.Control
    {
        private int width;//控件宽度
        private int height;//控件高度
        private System.Drawing.Bitmap bitmap;//控件上的图象
        private FlipModeStyle flip;//图象的翻转方式
        private event DisplaySizeChangedEventHandler eventHandler;//事件

        //构造方法,初始化数据成员
        public ImageZoomerControl()
        {
            width=this.width;
            height=this.height;
            bitmap=null;
            eventHandler=null;
        }

        //宽度属性
        [
        Category("ImageZoomer"),
        Description("The displayed image width.")
        ]
        public int DisplayWidth
        {
            get
            {
                return width;
            }
            set
            {
                if(value>=0)
                {
                    width=value;
                    Invalidate(this.ClientRectangle);
                }
            }
        }

        //高度属性
        [
        Category("ImageZoomer"),
        Description("The displayed image height.")
        ]
        public int DisplayHeight
        {
            get
            {
                return height;
            }
            set
            {
                if(value>=0)
                {
                    height=value;
                    this.Invalidate(this.ClientRectangle);
                }
            }
        }

        //图象属性
        [
        Category("ImageZoomer"),
        Description("The image displayed by this control."),
        DefaultValue(null)
        ]
        public Bitmap DisplayImage
        {
            get
            {
                return bitmap;
            }
            set
            {
                bitmap=value;
                if(bitmap!=null)
                {
                    width=bitmap.Width;
                    height=bitmap.Height;
                }
                else
                {
                    width=this.width;
                    height=this.height;
                }
                this.Invalidate(this.ClientRectangle);
            }
        }

        //翻转方式属性
        [
        Category("ImageZoomer"),
        Description("Specify how the image will be flipped.")
        ]
        public FlipModeStyle FlipMode
        {
            get
            {
                return flip;
            }
            set
            {
                flip=value;
                this.Invalidate(this.ClientRectangle);
            }
        }

        //事件属性
        [
        Category("ImageZoomer"),
        Description("Occurs when the image size is changed.")
        ]
        public event DisplaySizeChangedEventHandler DisplaySizeChanged
        {
            add
            {
                eventHandler+=value;
            }
            remove
            {
                eventHandler-=value;
            }
        }


        protected override void OnPaint(PaintEventArgs pe)
        {
            if(bitmap==null)
            {
                return;
            }
            Graphics g=pe.Graphics;

            //转换距阵
            System.Drawing.Drawing2D.Matrix transform;//距阵
            if(flip.Equals(FlipModeStyle.FlipX))
            {
                transform=new System.Drawing.Drawing2D.Matrix(-1,0,0,1,width,0);
            }
            else if(flip.Equals(FlipModeStyle.FlipY))
            {
                transform=new System.Drawing.Drawing2D.Matrix(1,0,0,-1,0,height);
            }
            else if(flip.Equals(FlipModeStyle.FlipXY))
            {
                transform=new System.Drawing.Drawing2D.Matrix(-1,0,0,-1,width,height);
            }
            else
            {
                transform=new System.Drawing.Drawing2D.Matrix(1,0,0,1,0,0);
            }
            //设置转换距阵
            g.Transform=transform;
            g.DrawImage(bitmap,new System.Drawing.Rectangle(0,0,width,height),
                0,0,bitmap.Width,bitmap.Height,
                GraphicsUnit.Pixel);
            //恢复绘图平面
            g.ResetTransform();

        }

        //发出事件的方法
        protected virtual void OnDisplaySizeChanged(DisplaySizeChangedEventArgs e)
        {
            //调用事件对象指向的方法
            this.Invoke(eventHandler,new object[]
                {
                    this,e
                }
                );
        }

        //重载方法,调用OnDisplaySizeChanged()发出事件
        protected override void OnMouseDown(MouseEventArgs e)
        {
            width=e.X;
            height=e.Y;
            this.Invalidate(this.ClientRectangle);

            DisplaySizeChangedEventArgs eventData=new DisplaySizeChangedEventArgs();
            eventData.Width=width;
            eventData.Height=height;

            this.OnDisplaySizeChanged(eventData);

            base.OnMouseDown(e);
        }

    }
}

网学推荐

免费论文

原创论文

设为首页 | 加入收藏 | 论文首页 | 论文专题 | 设计下载 | 网学软件 | 论文模板 | 论文资源 | 程序设计 | 关于网学 | 站内搜索 | 网学留言 | 友情链接 | 资料中心
版权所有 QQ:3710167 邮箱:3710167@qq.com 网学网 [Myeducs.cn] 您电脑的分辨率是 像素
Copyright 2008-2015 myeducs.Cn www.myeducs.Cn All Rights Reserved 湘ICP备09003080号