c# 点击一张图片,自动在几张图片顺序切换,点击图片左边切换上一张,点击图片右边切换下一张

如题所述

你好,软糖帮你做出来了,

ლ(⌒▽⌒ლ)还增加了用GDI+绘制透明提示文字(上一张/下一张)的部分。

首先要添加如下控件和事件处理

Form1_Load
Form1_SizeChanged
//pictureBox1 是一个布满窗体的图片框
pictureBox1_MouseUp
pictureBox1_MouseMove

窗体代码如下

    public partial class Form1 : Form {
        int 第几张 = 1;
        double 边界比例 = 0.17; //如果在左右边界20%宽度内点击则切换图片
        Font 字体 = new Font("微软雅黑", 14, FontStyle.Bold);
        Brush 矩形画笔 = new SolidBrush(Color.FromArgb(96, 255, 255, 255));
        Brush 文字画笔 = new SolidBrush(Color.FromArgb(255, 255, 255, 255));
        StringFormat 格式 = new StringFormat(StringFormatFlags.FitBlackBox);
        Bitmap 修改后图片;
        bool 图片已修改 = false;
        Rectangle rect1;
        Rectangle rect2;
        List<Image> 图像列表 ;
        public Form1() {
            InitializeComponent();
        }
        private void Form1_Load(object sender, EventArgs e) {
            图像列表 = new List<Image>();
            图像列表.Add(new Bitmap(@"I:\6-壁纸\风景\壁纸.风景.70.jpg"));
            图像列表.Add(new Bitmap(@"I:\6-壁纸\风景\壁纸.风景.71.jpg"));
            图像列表.Add(new Bitmap(@"I:\6-壁纸\风景\壁纸.风景.72.jpg"));
            图像列表.Add(new Bitmap(@"I:\6-壁纸\风景\壁纸.风景.73.jpg"));
            图像列表.Add(new Bitmap(@"I:\6-壁纸\风景\壁纸.风景.74.jpg"));
            图像列表.Add(new Bitmap(@"I:\6-壁纸\风景\壁纸.风景.75.jpg"));
            图像列表.Add(new Bitmap(@"I:\6-壁纸\风景\壁纸.风景.76.jpg"));
            图像列表.Add(new Bitmap(@"I:\6-壁纸\风景\壁纸.风景.77.jpg"));
            pictureBox1.SizeMode = PictureBoxSizeMode.Normal;
            尺寸变化();                     
            格式.Alignment = StringAlignment.Center;
            格式.LineAlignment = StringAlignment.Center;    
        }

        private void pictureBox1_MouseUp(object sender, MouseEventArgs e) {
            int i = e.X - pictureBox1.Left;
            int w = pictureBox1.Width;
            if (i > 0 && i < w * 边界比例) {  切换上一张();}
            else if (i > w * (1 - 边界比例) && i < w) {  切换下一张(); }
        }
        private void 切换上一张() {
            第几张 -= 1;
            if (第几张 < 1) { 第几张 = 图像列表.Count; }
            pictureBox1.Image = 图像列表[第几张 - 1];
            绘制上一张提示文字();
        }
        private void 切换下一张() {
            第几张 += 1;
            if (第几张 > 图像列表.Count) { 第几张 = 1; }
            pictureBox1.Image = 图像列表[第几张 - 1];
            绘制下一张提示文字();
        }
        private void 绘制上一张提示文字() {
            修改后图片 = new Bitmap(pictureBox1.Image);
            图片已修改 = true;
            var g = Graphics.FromImage(修改后图片);
            rect1 = new Rectangle(0, 0, (int)(pictureBox1.Width * 边界比例), pictureBox1.Height);     
            g.FillRectangle(矩形画笔, rect1);
            g.DrawString("上一张", 字体, 文字画笔, rect1, 格式);
            pictureBox1.Image = 修改后图片;
        }
        private void 绘制下一张提示文字() {
            修改后图片 = new Bitmap(pictureBox1.Image);
            图片已修改 = true;
            var g = Graphics.FromImage(修改后图片);
            rect2 = new Rectangle(pictureBox1.Width - (int)(pictureBox1.Width * 边界比例), 0,
         (int)(pictureBox1.Width * 边界比例), pictureBox1.Height);
            g.FillRectangle(矩形画笔, rect2);
            g.DrawString("下一张", 字体, 文字画笔, rect2, 格式);
            pictureBox1.Image = 修改后图片;
        }
        private void pictureBox1_MouseMove(object sender, MouseEventArgs e) {
            int i = e.X - pictureBox1.Left;
            int w = pictureBox1.Width;
            if (i > 0 && i < w * 0.2) {
                if (!图片已修改) { 绘制上一张提示文字(); }
            }
            else if (i > w * (1 - 0.2) && i < w) {
                if (!图片已修改) { 绘制下一张提示文字(); }
            }
            else {
                pictureBox1.Image = 图像列表[第几张 - 1];
                图片已修改 = false;
            }
        }
        private void 尺寸变化() {
            pictureBox1.Location = new Point(0, 0);
            pictureBox1.Width = this.ClientSize.Width;
            pictureBox1.Height = this.ClientSize.Height;
            pictureBox1.Image = 图像列表[第几张 - 1];
            图片已修改 = false;
         
        }
        private void Form1_SizeChanged(object sender, EventArgs e) {
            尺寸变化();
        }

请记得采纳,谢谢。

温馨提示:答案为网友推荐,仅供参考
第1个回答  2019-05-11
C#如何点击按钮后,使得按钮变成一张图片-CSDN论坛
C#如何点击按钮后,使得按钮变成一张图片如题,就是在窗体中添加一个按钮,然后按钮的样式尺寸等等为默认。 然后点击这个按钮后,使按钮变成指定的图片,就本回答被网友采纳
第2个回答  2019-05-10
他不知道在说些什么。完全听不懂。难道这个是要什么专业在里头?
第3个回答  2019-05-10
很高兴给你回答这一个问题

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网