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) {
尺寸变化();
}
请记得采纳,谢谢。
展开全部
C#如何点击按钮后,使得按钮变成一张图片-CSDN论坛
C#如何点击按钮后,使得按钮变成一张图片如题,就是在窗体中添加一个按钮,然后按钮的样式尺寸等等为默认。 然后点击这个按钮后,使按钮变成指定的图片,就
C#如何点击按钮后,使得按钮变成一张图片如题,就是在窗体中添加一个按钮,然后按钮的样式尺寸等等为默认。 然后点击这个按钮后,使按钮变成指定的图片,就
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
他不知道在说些什么。完全听不懂。难道这个是要什么专业在里头?
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
很高兴给你回答这一个问题
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询