C# winform控件之PictureBox详解
PictureBox表示用于显示图像的 Windows 图片框控件https://msdn.microsoft.com/zh-cn/library/system.windows.forms.picturebox.aspx
建立一项目:
完整代码如下 :
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.IO; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; namespace TestPictureBox { public partial class frmTestPictureBox : Form { public frmTestPictureBox() { InitializeComponent(); this.tbxFilePath.Enabled = false; this.btnPreview.Enabled = false; } /// <summary> /// 选择文件 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void btnSelectFile_Click(object sender, EventArgs e) { try { OpenFileDialog openFileDialog = new OpenFileDialog(); //设置打开对话框的初始目录,默认目录为exe运行文件所在的路径 openFileDialog.InitialDirectory = Application.StartupPath; //设置打开对话框的标题 openFileDialog.Title = "请选择图片"; //设置对话框是否记忆之前打开的目录 openFileDialog.RestoreDirectory = true; if (openFileDialog.ShowDialog() == DialogResult.OK) { //获取用户选择的文件完整路径 string filePath = openFileDialog.FileName; //获取对话框中所选文件的文件名和扩展名,文件名不包括路径 string fileName = openFileDialog.SafeFileName; if (isPicture(fileName)) { //获取用户选择的文件,并判断文件大小不能超过2M,fileInfo.Length是以字节为单位的 FileInfo fileInfo = new FileInfo(filePath); ) { MessageBox.Show("图片不能大于2M!"); } else { this.tbxFilePath.Text = filePath; this.btnPreview.Enabled = true; } } else { MessageBox.Show("图片不能为空!"); } } } catch (Exception ex) { } } /// <summary> /// 判断是否是图片 /// </summary> /// <param name="fileName"></param> /// <returns></returns> public bool isPicture(string fileName) { bool isFlag = true; try { if (fileName.EndsWith(".gif") || fileName.EndsWith(".jpge") || fileName.EndsWith(".jpg") || fileName.EndsWith(".png")) { return isFlag; } else { isFlag = false; return isFlag; } } catch (Exception ex) { } return isFlag; } /// <summary> /// 预览 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void btnPreview_Click(object sender, EventArgs e) { try { string filePath = this.tbxFilePath.Text; //根据路径转换为Byte[]数组 byte[] imgBytes = GetImageByPath(filePath); MemoryStream ms = , imgBytes.Length); //设置图片 Image returnImage = Image.FromStream(ms); //PictureBox 中的图像被拉伸或收缩,以适合PictureBox的大小 this.pictureBox.SizeMode = PictureBoxSizeMode.StretchImage; this.pictureBox.Image = returnImage; } catch (Exception ex) { } } /// <summary> /// 根据图片路径获取字节 /// </summary> /// <param name="filePath"></param> /// <returns></returns> public byte[] GetImageByPath(string filePath) { byte[] buffer = null; try { if (!string.IsNullOrEmpty(filePath)) { FileStream fs = new FileStream(filePath, FileMode.Open, FileAccess.Read); buffer = new byte[fs.Length]; fs.Read(buffer, , (int)fs.Length); fs.Close(); return buffer; } } catch (Exception ex) { } return buffer; } } }
C# winform控件之PictureBox详解的更多相关文章
- 《手把手教你》系列技巧篇(三十八)-java+ selenium自动化测试-日历时间控件-下篇(详解教程)
1.简介 理想很丰满现实很骨感,在应用selenium实现web自动化时,经常会遇到处理日期控件点击问题,手工很简单,可以一个个点击日期控件选择需要的日期,但自动化执行过程中,完全复制手工这样的操作就 ...
- 《手把手教你》系列技巧篇(三十七)-java+ selenium自动化测试-日历时间控件-上篇(详解教程)
1.简介 我们在实际工作中,有可能遇到有些web产品,网页上有一些时间选择,然后支持按照不同时间段范围去筛选数据.网页上日历控件一般,是一个文本输入框,鼠标点击,就会弹出日历界面,可以选择具体日期.这 ...
- iOS:选择器控件UIPickerView的详解和演示
选择器控件UIPickerView: 功能:它能够创建一个类似于密码锁式的单列或多列的选择菜单,用户可以通过它设置的代理来选择需要菜单中的任意的数据.例如创建日历.字体表(类型.大小.颜色).图库等. ...
- delphi控件属性大全-详解-简介
http://blog.csdn.net/u011096030/article/details/18716713 button 组件: CAPTION 属性 :用于在按钮上显示文本内容 Cancel ...
- 【VB技巧】VB ListView 控件功能使用详解
来源:http://lcx.cc/?i=494 ListView控件 在工具箱上击鼠标右键,选择快捷菜单的Components(部件)项,在控件列表中选择Microsoft Windows Commo ...
- AnyCAD三维控件场景节点详解
SceneNode是AnyCAD三维图形平台的AnyViz显示引擎的核心对象之一,只有放在场景管理器(SceneManager)里的节点才能被显示引擎所显示. 1. 节点分类 SceneNode是 ...
- javascript遍历控件(实例详解)
js遍历页面控件, 代码如下 复制代码 var inputArr = document.forms[0]; for( var i = 0; i < inputArr.length; i++ ...
- Webbrowser控件execcommand参数详解
2D-Position 允许通过拖曳移动绝对定位的对象.AbsolutePosition 设定元素的 position 属性为“absolute”(绝对).BackColor 设置或获取当前选中区的背 ...
- 转 VB ListView控件各种操作详解
Private Sub Form_Load() ListView1.ListItems.Clear '清空列表 ListView1.ColumnHeaders.Clear '清空列表头 ListVie ...
随机推荐
- 身份证号码正则匹配-javascript
function a(a, b) { return a.test(b) } function b(a) { return a = jQuery.trim(a), 0 == a.length } fun ...
- C语言之基本算法32—鞍点
//数组 /* ================================================================== 题目:求随意矩阵的全部鞍点.并统计个数.(在矩阵中 ...
- linux下编译ffmpeg 引入外部库x264
Found no assembler Minimum version is nasm-2.13 If you really want to compile without asm, configure ...
- 产生N个不重复的随机数的快速算法
//seed array ,,,,,,,,,}; //随机数个数 ; //结果存放在里面 ]; ; i < N; i++) { //从剩下的随机数里生成 , startArray.length ...
- 还需要学习的十二种CSS选择器
在前面的文章中,我们在介绍了<五种你必须彻底了解的CSS选择器>,现在向大家介绍,还需要学习的另外十二种CSS选择器.如果你还没有用过,就好好学习一下,如果你已经熟知了就当是温习. 一.X ...
- c++引用返回值
引用作为函数的返回值时,函数的返回值能够理解为函数返回了一个变量(事实上,函数返回引用时,它返回的是一个指向返回值的隐式指针),因此,值为引用的函数能够用作赋值运算符的左操作数.另外,用引用返回一个函 ...
- x264代码剖析(十三):核心算法之帧间预測函数x264_mb_analyse_inter_*()
x264代码剖析(十三):核心算法之帧间预測函数x264_mb_analyse_inter_*() 帧间预測是指利用视频时间域相关性,使用临近已编码图像像素预測当前图像的像素,以达到有效去除视频时域冗 ...
- eolinker开源版接口管理
eolinker开源版接口管理 想找一个API接口管理的软件,为了安全性和扩展性考虑,希望是开源的,而且可以在内网独立部署.网上翻找了资料,经过一份比对之后,最终采用eolinker.过去有使用过RA ...
- YII框架学习(二)
YII框架的增删改查 例:一个新闻表的增删改查: (1)首先使用gii工具生成控制器和模型 (2)控制器 <?php class NewsController extends Controlle ...
- python读写数据篇
一.读写数据1.读数据 #使用open打开文件后一定要记得调用文件对象的close()方法.比如可以用try/finally语句来确保最后能关闭文件.file_object = open('thefi ...