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
很高兴给你回答这一个问题

c# 点击一张图片,自动在几张图片顺序切换,点击图片左边切换上一张,点...
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 文字...

C#怎么通过鼠标单击一下就显示一张图片, 可以连续点击的显示多张图片...
首先,需要一个启动点击事件的lable控件,然后,一个图片集合Image控件 接着,用于显示图片的Pickture控件 最后,在鼠标单击lable的Click事件中,使用this.pickture.Image 赋值Image控件图片索引,获取索引可以通过for循环来控制Image控件的图片索引

如何在C#中使用PictureBox控制图片集的上一张和下一张?
关键的代码环节在于控制图片的切换。想象一下,一个简单的变量扮演着索引的角色,用于追踪当前显示的图片位置。在"上一张"和"下一张"按钮的点击事件中,编写这样的函数:private void navigate_images(){ int i = 图片集的名字.images.length; \/\/ 获取当前图片索引 图片框的名字.image = 图片集的名...

请问C#中如何实现点击一个按钮使别的控件上移或下移或左移或右移...
我给你一个例子,这个是使用按钮控制一个图片移动,其它控件可以参照此例:private static int temp;private void btnLeft_Click(object sender, EventArgs e){ if (this.picShow.Location.X == 0){ MessageBox.Show("已经到最左边了!");} else { temp = picShow.Location.X;temp -= 10;pic...

C#中如何切换多张图片?
private void timer1_Tick(object sender, EventArgs e){ if (temp % 3 != 0){ pictureBox1.Image = ilist.Images[temp++];} else { temp = 1;pictureBox1.Image = ilist.Images[0];} } private void Form1_Load(object sender, EventArgs e){ timer1.Enabled=true;ilist.Images.Add(...

...点击一下按钮,图片就切换一次。每次切换一张图片(listimage里有许多...
一般timer控件用于固定间隔时间执行某操作,但你说点击按钮切换图片,是要用来做图片切换的动画吗?如果是做动画的话可以用timer控件,在tick()事件里写切换图片的移动事件,如果仅仅是点击切换图片的话没有必要用timer哦,直接在按钮事件里写就好了 至于图片切换动画,大致的原理就是每隔多长时间改变图片的...

...在我点击按钮后,图片就变成另一张图片。再点击按钮,图片再变回来...
将图片放在imagelist里边 通过所以调用 image.images[0]

C#怎么实现图片上一张下一张
获取当前图片的索引,如果没有索引,则使用map自己添加一个索引,显示图片时设置一个变量记录当前显示的是第几张图片,如果取上一张,则找到上一张图片的索引,然后读取这个文件的名称显示出来就可以了。

c#电子相册上一张下一张怎么处理
给 pic 多加一列 id 自动的 1 2 3...然后 点击“上一张” 就插 id差1的图片 应该很简单吧?【拿不拿分不要紧,希望某些人不要昧着良心来骗分 骗分是小,误导所有关心这问题的人是大 我不是为了分而来,但最后很多人愿意把分给我!】...

在C#中实现图片“上一张”“下一张”功能
创建一个PICtureBox 的图片框 然后再添加一个Listimage图片集在窗体上。上一张或者下一张就是改变图片集的索引 比如 int i; \/\/声明个变量作为图片的索引 \/\/把这个方法放在两个按钮的事件中 private void image(){ 图片框的名字.image=图片集的名字.images[i];if(图片集的名字.images[i]....

相似回答