秋声赋
简单易懂的现代魔法:C#编程教程(四) 图片与文字

本帖最后由 秋声赋 于 2012-4-18 13:15 编辑

简单易懂的现代魔法:C#编程教程(四)

图片与文字

上次介绍了控件和事件的概念,并通过使用按钮控件加深了了解.

这次我们要学会怎么在程序中显示图片和文字.

同样的,一般情况下显示图片和文字都是通过控件完成.

图片是(PictureBox控件),文字是(Label控件)


首先介绍PictureBox控件

还是新建一个WinForm工程,并在工具栏中找到PictureBox控件,把他拖到窗口上.

这时候PictureBox控件是没有图像的,同样的,我们先来看下PictureBox控件的属性.

发现这个Image属性就是指定显示哪个图像.点开后面的按钮,进入选择图片的界面.

我们选择上面的本地资源,点击导入.然后选择一个图片,点击确定.

就能发现现在PictureBox控件里面显示了我们选择的那张图片了.

但是你可能会发现,这张图片显示的并不完全,

是因为PictureBox控件默认的显示模式是平铺的,所以图片比控件大的时候就只会显示一部分.

我们来修改Picture控件的SizeMode属性Zoom(应该是对应的设置桌面时候的 适应)

然后就可以发现图片显示正常了,当然我们可以根据实际的需要来调整SizeMode.

可能你会问,一个Galgame不可能从头到尾就一张图片吧?

要怎么在不同的时候显示多张图片?

不可能放很多的PictureBox控件吧

这里你就要记住一点,所有在属性栏里面能修改的属性都是可以在程序中修改的.

让我们先看一下怎么在代码中为PictureBox控件指定显示的图片.

在我们的窗体上在拖出一个按钮(Button)控件,并为他的Click事件添加响应函数.

我们这里要用到一个新的类,Bitmap,他封装了一个位图(或者说代表了一个位图.位图是啥?可以理解为图片,详细的自己去百度吧).

Bitmap是个很方便的类,在定义的时候我们只要在构造函数里面指定图片的文件路径就可以自动读取图片了.如下所示:

Bitmap 图片1 = new Bitmap(@"D:\动漫杂项\图包(秋之回忆)\秋之回忆1-7全CG\秋之回忆雨后Vol3卒业cg\01-02:上面没有啦!.jpg");

这时候,图片1这个变量就代表了上面文件路径所指定的图片.

(这里注意文件路径前面有个@,这表示我们不需要在这个字符串里面用转义字符.什么是转义字符?

一些用\+字母表示的字符,例如\n就表示换行,\t表示制表符,因为我们这里不需要这些,但是文件路径里面又有\,所以要在前面加个@).

然后就是修改PictureBox控件(这里对应的变量是pictureBox1)Image属性,直接赋值即可.

[mw_shl_code=csharp,true] pictureBox1.Image = 图片1;[/mw_shl_code]

运行程序,单击下按钮,就会发现图片变成了我们指定的图片.

可以看出C#里面显示图片还是很简单的吧?


接下来是文字,相对于图片,显示文字就简单多了.

首先在窗体中拖入一个Label控件,

这里我们发现Label控件是不能修改大小的,要修改大小就需要修改他显示的文字的字体.

修改成自己喜欢的,然后看到下面这个Text属性,这里就是我们要显示的文字.

修改下.我们就能从窗口看到效果.

同样的,我们也能在代码中改变这些文字.

label1.Text = "真心跪求,104228916@qq.com";

运行,单击按钮后效果如下:



上面就是这次的内容.

这次学习了用PictureBox控件和Label控件显示图片和文字.

作业:
1. 当鼠标点击PictureBox控件是时候切换图片,一共要有5张,并且是循环播放的,例如第5张显示出来后,再点击就显示第一张.
2. 尝试用OpenFileDialog控件做一个简单的图片查看器.

OpenFileDialog op = new OpenFileDialog();

op.ShowDialog();

这之后, op.FileName里面就代表了用户选择的图片的路径.

dickto123
不能生成
展开Biu

大大why不能生成!111!

using System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Data;

using System.Drawing;

using System.Linq;

using System.Text;

using System.Windows.Forms;

namespace WindowsFormsApplication1

{

public partial class Form1 : Form

{

public Form1()

{

InitializeComponent();

}

private void button1_Click(object sender, EventArgs e)

{

Bitmap 圖片1 = new Bitmap(@"C:\Users\kkto\Desktop\DSCN1922.jpg");

pictureBox1.Image = 圖片1;

}

}

}

[查看全文]
╰黒の眼圏╮
不要笑我
展开Biu

using System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Data;

using System.Drawing;

using System.Linq;

using System.Text;

using System.Windows.Forms;

namespace WindowsFormsApplication1

{

public partial class Form1 : Form

{

public int k=0;

public Form1()

{

InitializeComponent();

}

private void button1_Click(object sender, EventArgs e)

{

k++;

if (k == 1)

{

Bitmap 图片 = new Bitmap(@"D:\连接A.jpg");

tu.Image = 图片;

}

else if (k == 2)

{

Bitmap 图片1 = new Bitmap(@"D:\连接B.jpg");

tu.Image = 图片1;

}

else if (k == 3)

{

Bitmap 图片2 = new Bitmap(@"D:\连接C.jpg");

tu.Image = 图片2;

k = 0;

}

}

}

}

新手,不要笑我!9~

[查看全文]
未夜没事瞎折腾
如果图大了就相当模糊
展开Biu

求问,用imagelist的话,只支持1~256的图,如果图大了就相当模糊。。。恩。。。。如何是好!!!(~~~~(>_<)~~~~

[查看全文]
绯月御手
捣鼓了半天
展开Biu

捣鼓了半天 还是抄袭了楼上的才整出来 坑爹啊

[查看全文]
l001213
果然还是函数好用
展开Biu

int a = 0;

private void button1_Click(object sender, EventArgs e)

{

Bitmap picture1 = new Bitmap(@"d:\My Documents\My Pictures\713f7dd3jw1duqksh838ej.jpg");

Bitmap picture2 = new Bitmap(@"d:\My Documents\My Pictures\0680e_ozpR0h.jpg");

Bitmap picture3 = new Bitmap(@"d:\My Documents\My Pictures\52339a2b8a2fa47e5243c17b.jpg");

Bitmap picture4 = new Bitmap(@"d:\My Documents\My Pictures\174409eill5mldx5dllszi.jpg");

Bitmap picture5 = new Bitmap(@"d:\My Documents\My Pictures\919_1537872_fea0d9f8d17b3f7.jpg");

switch (a)

{

case 0: pictureBox1.Image = picture1; a = a + 1; break;

case 1: pictureBox1.Image = picture2; a = a + 1; break;

case 2: pictureBox1.Image = picture3; a = a + 1; break;

case 3: pictureBox1.Image = picture4; a = a + 1; break;

case 4: pictureBox1.Image = picture5; a = a + 1; break;

case 5: pictureBox1.Image = picture1; a = a + 1; if (a > 5) a = 1; break;

}

}

}

}

果然还是函数好用

[查看全文]
公子无忧
第一题参考其他人的
展开Biu

#76f第一题参考其他人的switch弄出来了,第二题#23f

[查看全文]
GN小粒子
你只是把
展开Biu

秋声赋 发表于 2013-5-9 23:41

当a==5时

你只是把 1赋值给a了

但是并没有操作图片啊

soga,多谢LZ大大指教

[查看全文]
秋声赋
你只是把
展开Biu

GN小粒子 发表于 2013-5-9 22:57

int a=0;

private void button1_Click(object sender, EventArgs e)

{

当a==5时

你只是把 1赋值给a了

但是并没有操作图片啊

[查看全文]