秋声赋
简单易懂的现代魔法: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里面就代表了用户选择的图片的路径.

GN小粒子
这样能循环了
展开Biu

int a=0;

private void button1_Click(object sender, EventArgs e)

{

Bitmap picture1 = new Bitmap(@"C:\Users\Administrator\Pictures\LifeFrame\名.jpg");

Bitmap picture2 = new Bitmap(@"C:\Users\Administrator\Pictures\MIKU.jpg");

Bitmap picture3 = new Bitmap(@"C:\Users\Administrator\Pictures\1.jpg");

Bitmap picture4 = new Bitmap(@"C:\Users\Administrator\Pictures\2.jpg");

Bitmap picture5 = new Bitmap(@"C:\Users\Administrator\Pictures\萌MIKU.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: a = a + 1; if (a > 5) a = 1; break;

}

这样能循环了,不过不知道为啥,最后一张转到第一张的时候要点两下,求LZ大大解救

[查看全文]
魂杰
弱弱的说
展开Biu

弱弱的说 Label貌似可以改变大小 可以选择自动式 或 六点式$49$

[查看全文]
碉堡了
顶秋老师
展开Biu

顶秋老师~~~

[查看全文]
乖◐ω◑
学到东西了
展开Biu

学到东西了

[查看全文]
蘑菇Maysfolo
第二个就
展开Biu

第二个就testisache了

[查看全文]
蘑菇Maysfolo
第二个就
展开Biu

第二个就testisache了

[查看全文]
蘑菇Maysfolo
蘑菇Maysfolo回复给帖子:3815902
展开Biu

namespace WindowsFormsApplication3

{

public partial class Form1 : Form

{

public Form1()

{

InitializeComponent();

}

private void Form1_Load(object sender, EventArgs e)

{

}

int n = 0;

private void pictureBox1_MouseDown(object sender, MouseEventArgs e)

{

Bitmap pit1 = new Bitmap(@"C:\Users\Maysfolo\Pictures\青蛙\1.jpg");

Bitmap pit2 = new Bitmap(@"C:\Users\Public\Pictures\Sample Pictures\蘑菇maysfolo.jpg");

Bitmap pit3 = new Bitmap(@"C:\Users\Public\Pictures\Sample Pictures\2.jpg");

Bitmap pit4 = new Bitmap(@"C:\Users\Public\Pictures\Sample Pictures\3.jpg");

Bitmap pit5 = new Bitmap(@"C:\Users\Maysfolo\Pictures\青蛙\2.png");

switch (n)

{

case 0: pictureBox1.Image = pit1; n = n + 1; break;

case 1: pictureBox1.Image = pit2; n = n + 1; break;

case 2: pictureBox1.Image = pit3; n = n + 1; break;

case 3: pictureBox1.Image = pit4; n = n + 1; break;

case 4: pictureBox1.Image = pit5; n = 0; break;

default: MessageBox.Show ("error"); break;

}

}

}

}

[查看全文]
藤原灰哲
一点没学过
展开Biu

@@35!! 一点没学过C#的表示看懂了LZ写的但是完全不知道题目怎么做 也完全不知道楼下的在说什么

[查看全文]