用C#做的一个简单的图片浏览器
(1)参考现有图片浏览软件的功能,实现一个自己的图片浏览器;
(2)该文档浏览器,至少完成以下功能;
文件操作: 目录打开,指定文件打开;
图片显示方式: normal,stretch;
图片旋转操作;
图片浏览功能:幻灯片演示;
(3)界面美观,操作方便
设计思路
(1)首先,无论是进行哪一步的操作,获取本地图片的path都是至关重要的,所以第一步是实现“目录打开,指定文件打开”,这里用到的控件是folderBrowserDialog,利用他可以轻松的获取本地的相应地址,然后用imageList保存,下面是实现代码:
目录获取:
if (folderBrowserDialog1.ShowDialog() == DialogResult.OK)
{
filePath = folderBrowserDialog1.SelectedPath;//获取目录path
}
if (!string.IsNullOrEmpty(filePath)) //判空
{
DirectoryInfo dir = new DirectoryInfo(filePath);
foreach (FileInfo dChild in dir.GetFiles("*.jpg"))//获取jpg图片,并压入imageList
{
Image img = Image.FromFile(dChild.FullName, true);
list.Add(dChild.FullName);
imageList1.Images.Add(img);
imageList2.Images.Add(img);
}
//
//中间夹杂着重复性的对不同图片格式的相同处理,因为不关键,所以不想占字数了。
//
for (int i = 0; i < imageList1.Images.Count; i++)//用listView显示缩略图
{
ListViewItem lvi = new ListViewItem();
lvi.Name = list[i];
lvi.ImageIndex = i;
listView1.Items.Add(lvi);
}
单个文件获取:
OpenFileDialog openFileDialog1 = new OpenFileDialog();
openFileDialog1.Filter = "图?片?文?件t(*.bmp,jpg,gif,jpeg)|*.bmp;*.jpg;gif;jpeg";
openFileDialog1.Multiselect = true;
if (openFileDialog1.ShowDialog() == DialogResult.OK)
{
List<string> keylist = new List<string>();
string filename = openFileDialog1.FileName;
path2 = filename;
PictureView a = new PictureView(path2);//将文件导入单独文件处理模块
a.Show();
}
(2)获取了图片文件后,我首先完成的是幻灯片的放映,所利用的原理很简单,就是利用timer 控件,循环的切换image,以达到自动幻灯片的效果:
if (i < allpath.Count())
{
Image img;
img = Image.FromFile(allpath[i], true);
int width = img.Width;
int height = img.Height;
if (width > pictureBox1.Width || height > pictureBox1.Height)
{
pictureBox1.SizeMode = PictureBoxSizeMode.Zoom;
}
else
{
pictureBox1.SizeMode = PictureBoxSizeMode.CenterImage;
}
pictureBox1.Image = img;
GC.Collect();
i++;
if (i == allpath.Count())
{
i = 0;
}
}
在这里小小地补充了一个设置播放时速的功能:
int tmp;
if (textBox1.Text.Length != 0)
{
tmp = Convert.ToInt32(textBox1.Text);
if (tmp > 0)
{
timer1.Interval = tmp;
}
}
(3)接下来是针对单独一张图片的处理,包括扩大,缩小,旋转操作
首先是放大缩小
width1 = Convert.ToInt32( width1/1.2);
height1 = Convert.ToInt32( height1/1.2);
pictureBox1.SizeMode = PictureBoxSizeMode.Zoom;
pictureBox1.Size = new Size(width1,height1);
width1 =Convert.ToInt32( width1 * 1.2);
height1 = Convert.ToInt32( height1 * 1.2);
pictureBox1.SizeMode = PictureBoxSizeMode.Zoom;
pictureBox1.Size = new Size(width1, height1);
然后是旋转,这里是用RotateFlipType的自带方法完成的
pheight = pictureBox1.Width;
pwidth = pictureBox1.Height;
pictureBox1.Size = new Size(pwidth, pheight);
pictureBox1.Image.RotateFlip(RotateFlipType.Rotate270FlipNone);
pictureBox1.Refresh();
int p = pictureBox1.Width;
pwidth = pictureBox1.Height;
pheight = p;
pictureBox1.Size = new Size(pwidth,pheight);
pictureBox1.Image.RotateFlip(RotateFlipType.Rotate90FlipNone);
pictureBox1.Refresh();
然后是调节显示的模式,这里直接设置就好了
Normal:
pictureBox1.SizeMode = PictureBoxSizeMode.AutoSize;
Stretch
pictureBox1.Size = new Size(713, 405);
pictureBox1.SizeMode = PictureBoxSizeMode.Zoom;
再然后就是一些小的附加功能,比如说将图片强制生成为123.png,当然是自选路径的。
folderBrowserDialog1.Description = "选?择?文?件t夹D";
if (folderBrowserDialog1.ShowDialog() == DialogResult.OK)
{
filePath = folderBrowserDialog1.SelectedPath;
}
bmp = (Bitmap)Bitmap.FromFile(path);
pictureBox1.Image = bmp;
filePath = filePath + "/123.png";
bmp.Save(filePath, System.Drawing.Imaging.ImageFormat.Png);
反转演示:
gra = this.pictureBox1.CreateGraphics();
gra.Clear(this.BackColor);
for (int x = -width / 2; x <= width / 2; x++)
{
Rectangle DestRect = new Rectangle(0, height / 2 - x, width, 2 * x);
Rectangle SrcRect = new Rectangle(0, 0, this.pictureBox1.Image.Width, this.pictureBox1.Image.Height);
gra.DrawImage(this.pictureBox1.Image, DestRect, SrcRect, GraphicsUnit.Pixel);
}
gra.Dispose();
程序运行效果图
1. 目录获取:
2.获取后缩略图显示
3.幻灯片播放:
4.单张处理:
下面附上demo的下载地址http://download.csdn.net/detail/u010669765/7484375
用C#做的一个简单的图片浏览器相关推荐
- python实现一个简单的图片浏览器
上一个博客中学习了如何在网页上进行简单的图片爬取,目的是制作一个简单的图片浏览器,然后可以选择喜欢的图片筛选到另一个文件夹中. 爬取图片的博客链接:https://blog.csdn.net/yql_ ...
- 【Android】Android studio做一个简单的图片浏览器
我们现在布局文件中定义一个简单的线性布局容器,代码如下 activity_main.xml <?xml version="1.0" encoding="utf-8& ...
- 用python做一个简单的图片浏览器竟如此简单
用了106行代码就做了一个图片浏览器,python真的太强大了.废话少说,看看效果先! 106行代码中还有不少代码是美化用的,真正功能的代码就没几句了.还是说说功能吧: 1. 打开文件夹,并只打开特定 ...
- (简单课设)前端小白刚做的一个简单的移动端项目的分享和总结
前端小白刚做的一个简单的移动端项目的分享和总结 所用技术为简单的div+css 直接上图片 代码部分 小滴服务 接下来是企业项目部分 接下来是我的小滴部分 (另外两个部分内容非常简单,没必要粘贴代码了 ...
- 做了一个PC端图片阅读器,将它命名为「图阅」 | 初尝rust
给「图阅」简单做个logo 目录 1 这图片阅读器长啥样? 2 为啥要整这活? 3 怎么开发的? 4 rust用起来感觉怎样啊? 5 软件在哪里下载?(show me the code) // 它长这 ...
- 一个简单的图片懒加载
一个简单的图片懒加载 所谓懒加载,是为了提高网页的打开的速度,获得更好用户体验的一种手段.其选择的重要的部分先加载,次要的部分需要的时候再加载.比如一个电商网站,首屏通常有很多的数据,清晰度较高的 b ...
- python自动上传图片_使用Python实现一个简单的图片上传存储服务
使用flask实现的一个简单的图片上传服务 设计初衷 对于图片的存储,有很多选择,一般采用云服务如(七牛,又拍等),但是国内的服务像七牛 自定义域名竟然需要域名备案(Excuse me,当初就是因为备 ...
- HTML实现一个简单的图片自动显示特效
一个简单的图片自动显示特效 源代码: <html><head><title>Web</title><link href="https:/ ...
- 用go来搭建一个简单的图片上传网站
提前说明一下:代码参考了<Go语言编程>,稍有变动, 自己亲自玩了一遍. 之前玩过go web server, 现在来用go来搭建一个简单的图片上传网站, 工作目录是:~/photoweb ...
最新文章
- java 实验4 异常
- 在Ubuntu中自动运行KMS服务
- 微信支付 - 构建商户订单
- 【渝粤题库】广东开放大学 现代服务学概论 形成性考核 (2)
- sparkstreaming监听hdfs目录_大数据系列之Spark Streaming接入Kafka数据
- insert事务隔离mysql_MySQL数据库详解(三)MySQL的事务隔离剖析
- unity2d随机生成物体_2020 年最好用的一键生成设计神器,全在这里了!
- spring boot 配置动态刷新
- C++学习之路 | PTA乙级—— 1086 就不告诉你 (15 分)(精简)
- sohu读博——周忆清
- mysql binlog解析 c_解析MYSQL BINLOG二进制格式(9)--infobin解析binlog帮助文档
- GitHub、YouTube 们的开源替代品都有了!
- Study Struts Commons Validator
- 2020-08-27
- JS与Asp.Net的传值
- 斯坦福-随机图模型-week1.4_
- service数据保存_精通IPFS:IPFS 保存内容之下篇
- 弹性分布式数据集RDD
- 揭开CSS的绝对定位真实的面纱(二)
- linux ssd 4k对齐工具下载,4k对齐检测工具(as ssd benchmark)