(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#做的一个简单的图片浏览器相关推荐

  1. python实现一个简单的图片浏览器

    上一个博客中学习了如何在网页上进行简单的图片爬取,目的是制作一个简单的图片浏览器,然后可以选择喜欢的图片筛选到另一个文件夹中. 爬取图片的博客链接:https://blog.csdn.net/yql_ ...

  2. 【Android】Android studio做一个简单的图片浏览器

    我们现在布局文件中定义一个简单的线性布局容器,代码如下 activity_main.xml <?xml version="1.0" encoding="utf-8& ...

  3. 用python做一个简单的图片浏览器竟如此简单

    用了106行代码就做了一个图片浏览器,python真的太强大了.废话少说,看看效果先! 106行代码中还有不少代码是美化用的,真正功能的代码就没几句了.还是说说功能吧: 1. 打开文件夹,并只打开特定 ...

  4. (简单课设)前端小白刚做的一个简单的移动端项目的分享和总结

    前端小白刚做的一个简单的移动端项目的分享和总结 所用技术为简单的div+css 直接上图片 代码部分 小滴服务 接下来是企业项目部分 接下来是我的小滴部分 (另外两个部分内容非常简单,没必要粘贴代码了 ...

  5. 做了一个PC端图片阅读器,将它命名为「图阅」 | 初尝rust

    给「图阅」简单做个logo 目录 1 这图片阅读器长啥样? 2 为啥要整这活? 3 怎么开发的? 4 rust用起来感觉怎样啊? 5 软件在哪里下载?(show me the code) // 它长这 ...

  6. 一个简单的图片懒加载

    一个简单的图片懒加载 所谓懒加载,是为了提高网页的打开的速度,获得更好用户体验的一种手段.其选择的重要的部分先加载,次要的部分需要的时候再加载.比如一个电商网站,首屏通常有很多的数据,清晰度较高的 b ...

  7. python自动上传图片_使用Python实现一个简单的图片上传存储服务

    使用flask实现的一个简单的图片上传服务 设计初衷 对于图片的存储,有很多选择,一般采用云服务如(七牛,又拍等),但是国内的服务像七牛 自定义域名竟然需要域名备案(Excuse me,当初就是因为备 ...

  8. HTML实现一个简单的图片自动显示特效

    一个简单的图片自动显示特效 源代码: <html><head><title>Web</title><link href="https:/ ...

  9. 用go来搭建一个简单的图片上传网站

    提前说明一下:代码参考了<Go语言编程>,稍有变动, 自己亲自玩了一遍. 之前玩过go web server, 现在来用go来搭建一个简单的图片上传网站, 工作目录是:~/photoweb ...

最新文章

  1. java 实验4 异常
  2. 在Ubuntu中自动运行KMS服务
  3. 微信支付 - 构建商户订单
  4. 【渝粤题库】广东开放大学 现代服务学概论 形成性考核 (2)
  5. sparkstreaming监听hdfs目录_大数据系列之Spark Streaming接入Kafka数据
  6. insert事务隔离mysql_MySQL数据库详解(三)MySQL的事务隔离剖析
  7. unity2d随机生成物体_2020 年最好用的一键生成设计神器,全在这里了!
  8. spring boot 配置动态刷新
  9. C++学习之路 | PTA乙级—— 1086 就不告诉你 (15 分)(精简)
  10. sohu读博——周忆清
  11. mysql binlog解析 c_解析MYSQL BINLOG二进制格式(9)--infobin解析binlog帮助文档
  12. GitHub、YouTube 们的开源替代品都有了!
  13. Study Struts Commons Validator
  14. 2020-08-27
  15. JS与Asp.Net的传值
  16. 斯坦福-随机图模型-week1.4_
  17. service数据保存_精通IPFS:IPFS 保存内容之下篇
  18. 弹性分布式数据集RDD
  19. 揭开CSS的绝对定位真实的面纱(二)
  20. linux ssd 4k对齐工具下载,4k对齐检测工具(as ssd benchmark)

热门文章

  1. 股市江湖-高手的层次
  2. 当互联网的红利不再,更多人开始寻找新的发展方式和方法
  3. 全宇宙首发 micropython lvgl on esp32s3已经被攻破!
  4. note : 有些道理的话
  5. 移动端-简单新闻类列表模板样式
  6. 摘自QQ群,结婚前和结婚后
  7. linux Cpu 频率.
  8. Custom elements in iteration require ‘v-bind:key‘ directives vue/valid-v-for
  9. Android系统SD卡升级
  10. Python书单推荐一波