首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

C#图片放大.解决思路

2013-03-27 
C#图片放大.private bool isMoving falseprivate int x, yprivate void mouseDown(object sender, Mou

C#图片放大.


private bool isMoving = false;
        private int x, y;


        private void mouseDown(object sender, MouseEventArgs e)
        {
            this.pictureBox1.Focus();
            isMoving = true;
            x = e.X;
            y = e.Y;
        }

        private void mouseMove(object sender, MouseEventArgs e)
        {
            if (isMoving)
            {
                this.pictureBox1.Left += (e.X - x);
                this.pictureBox1.Top += (e.Y - y);

            }
        }

        private void mouseUp(object sender, MouseEventArgs e)
        {
            isMoving = false;
        }

        private void PictureBox1_MouseWheel(object sender, System.Windows.Forms.MouseEventArgs e)
        {

            if (e.Delta > 0)
            {
                pictureBox1.Width = Convert.ToInt32(pictureBox1.Width * 0.8);
                pictureBox1.Height = Convert.ToInt32(pictureBox1.Height * 0.8);

            }

            else
            {
                pictureBox1.Width = Convert.ToInt32(pictureBox1.Width / 0.8);
                pictureBox1.Height = Convert.ToInt32(pictureBox1.Height / 0.8);

            }

        }




小弟现在这个放大代码,充其量只是能放大图片所在的PICTRUEBOX来达到放大图片的结果,但是放大的效果不好,图片是在PICTRUEBOX的左上角开始放大,那么就会造成图片会"走动"可否有办法放大的效果是"居中放大".请高手帮帮忙
[解决办法]
写在代码里最直接,根据原始图片的 Width 和 pictureBox1.Width 进行判断


int imgWidth = this.pictureBox1.Image.Width;
int width = this.pictureBox1.Width;



if (width / imgWidth >= 8) return; // 放大
if((float)width / (float)imgWidth <= 0.1) return; // 缩小



关于图片处理和动画,其实楼主可以看看 WPF 相关的设计,比这个有趣,而且功能超强!

热点排行