C# picturebox 用法

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C# picturebox 用法相关的知识,希望对你有一定的参考价值。

想用picturebox来显示图片,老不会用,求高手帮我
窗体上是一个picturebox控件,一个按钮,
电脑中C::\123.jsp 为想要添加的图片

1,运行程序时,按按钮,就能出现选择文件夹那个窗口,然后选择到123.jsp,然后显示到picturebox控件上,
2,SQL数据库中要存储这个图片,类型为image,该如何写呢
3,要从数据库中提取这个图片放回picturebox上,又该如何写呢?
例如con.tables[0].row[0][4]就是这个图片,把他显示在picturebox上
picturebox.image=con.tables[0].row[0][4];这样写对么?

参考技术A OpenFileDialog dlg = new OpenFileDialog();//创建事例
string dir = Environment.GetFolderPath(Environment.SpecialFolder.Templates);//指定初始目录
dlg.InitialDirectory = dir;//指定初始目录
dlg.Title = "简单对话框";
dlg.ShowReadOnly = true;//以只读方式打开
dlg.ShowHelp = true;//显示帮助按钮
///////
dlg.Filter = "程序.exe|*.exe|所有文件|*.*";//文件过滤器,指定打开文件类型
dlg.ShowDialog();//打开对话框
MessageBox.Show(dlg.Title);//打开消息
dlg.Multiselect = true;//是否允许一次打开多个文件
// if (dlg.ShowDialog() == DialogResult.OK)
//

if (dlg.CheckPathExists)//检查路径是否存在

if (dlg.CheckFileExists)//检查文件是否存在

if (dlg.ValidateNames)//检查是否有效Win32文件名

if (dlg.ShowDialog() == DialogResult.OK)

foreach (string s in dlg.FileNames)

//string fileName = dlg.FileName;
MessageBox.Show("打开文件:" + s);//打开消息对话框


本回答被提问者采纳
参考技术B PictureBox
控件的主要作用是为用户显示图片。实际显示图片由
Picture
属性决定。Picture
属性包括被显示的图片的文件名(及可选的路径名)。
注意
窗体对象也具有
Picture
属性,通过设置该属性可直接在窗体背景上显示图片。
要在运行时显示或替换图片,可利用函数
LoadPicture
来设置
Picture
属性。提供图片文件名和可选路径名,由
LoadPicture
函数处理加载和显示图片的细节。
picMain.Picture
=
LoadPicture("VANGOGH.BMP")
PictureBox
控件具有
AutoSize
属性,当该属性设置为
True
时,PictureBox
能自动调整大小与显示的图片匹配。如果要用
AutoSize
属性设置为
True

PictureBox
,设计窗体时就需要特别小心。图片将不考虑窗体上的其它控件而调整大小,这可能导致意想不到的后果,如覆盖其它控件。设计时应通过加载每一幅图片来检查是否有这种现象发生。
使用
PictureBox
作为容器
Picture
box
控件也可以用作其它控件的容器。象
Frame
控件一样,可以在
PictureBox
控件上面加上其它控件。这些控件随
PictureBox
移动而移动,其
Top

Left
属性是相对
PictureBox
而言,而与窗体无关。
PictureBox
容器的一种普通用法是
ToolBar

StatusBar
。可将
Image
控件置于这些容器中作为按钮或添加
Label
显示状态信息。将
Align
属性设置为
Top、Bottom、Left

Right
,PictureBox
将粘贴在窗体的边缘。
PictureBox
的其它用法
PictureBox
控件有几种方法使
PictureBox
可用于其它目的。例如:把
PictureBox
看作是一块空画布,可以在它上面画画或打印,或者显示文本、图形,甚至是简单的动画。
Print
方法允许向
PictureBox
控件输出文本,如同向打印机输出一样。有几种字体属性可以控制由
Print
方法输入的文本的特性;Cls
方法可以清除输出。
Circle、Line、Point

Pset
方法可以用于在
PictureBox
中画图形。一些属性如
DrawWidth、FillColor

FillStyle
允许自定义图形的外观。

PaintPicture
方法在图片控件内移动
Image
、并在几幅不同的
Image
间快速变化就能产生动画。
详细信息
关于
PictureBox
控件的详细信息,请参阅“使用
Visual
Basic
的标准控件”。

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);
                        if (fileInfo.Length > 2097152)
                        {
                            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 = new MemoryStream(imgBytes, 0, 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, 0, (int)fs.Length);
                    fs.Close();
                    return buffer;
                }
            }
            catch (Exception ex)
            {
            }
            return buffer;
        }
    }
}

 

以上是关于C# picturebox 用法的主要内容,如果未能解决你的问题,请参考以下文章

在c#中如何对picturebox设置一个滚动条啊

C# winform控件之PictureBox详解

c# winform如何取得一个区域的所有控件对象

C# Forms - 从 Buttons、PictureBoxes、

C# 制作(PictureBox)圆形头像框 从数据库中读取头像

C# 制作(PictureBox)圆形头像框 从数据库中读取头像