c#位图转换未矢量图_c# 图形图像 | 学步园
圖形圖像
一、圖形的種類。
1、矢量圖
矢量圖像,也稱為面向?qū)ο蟮膱D像或繪圖圖像,在數(shù)學(xué)上定義為一系列由線連接的點(diǎn)。矢量文件中的圖形元素稱為對象。每個(gè)對象都是一個(gè)自成一體的實(shí)體,它具有顏色、形狀、輪廓、大小和屏幕位置等屬性。既然每個(gè)對象都是一個(gè)自成一體的實(shí)體,就可以在維持它原有清晰度和彎曲度的同時(shí),多次移動(dòng)和改變它的屬性,而不會(huì)影響圖例中的其它對象。這些特征使基于矢量的程序特別適用于圖例和三維建模,因?yàn)樗鼈兺ǔR竽軇?chuàng)建和操作單個(gè)對象。基于矢量的繪圖同分辨率無關(guān)。這意味著它們可以按最高分辨率顯示到輸出設(shè)備上。
矢量圖與位圖最大的區(qū)別是,它不受分辨率的影響。因此在印刷時(shí),可以任意放大或縮小圖形而不會(huì)影響出圖的清晰度
矢量圖:是根據(jù)幾何特性來繪制圖形,矢量可以是一個(gè)點(diǎn)或一條線,矢量圖只能靠軟件生成,文件戰(zhàn)用內(nèi)在空間較小,因?yàn)檫@種類型的圖像文件包含獨(dú)立的分離圖像,可以自由無限制的重新組合。它的特點(diǎn)是放大后圖像不會(huì)失真,和分辨率無關(guān),文件占用空間較小,適用于圖形設(shè)計(jì)、文字設(shè)計(jì)和一些標(biāo)志設(shè)計(jì)、版式設(shè)計(jì)等。
2、 位圖
亦稱為點(diǎn)陣圖像或繪制圖像,是由稱作像素(圖片元素)的單個(gè)點(diǎn)組成的。這些點(diǎn)可以進(jìn)行不同的排列和染色以構(gòu)成圖樣。當(dāng)放大位圖時(shí),可以看見賴以構(gòu)成整個(gè)圖像的無數(shù)單個(gè)方塊。擴(kuò)大位圖尺寸的效果是增多單個(gè)像素,從而使線條和形狀顯得參差不齊。然而,如果從稍遠(yuǎn)的位置觀看它,位圖圖像的顏色和形狀又顯得是連續(xù)的。在體檢時(shí),工作人員會(huì)給你一個(gè)本子,在這個(gè)本子上有一些圖像,而圖像都是由一個(gè)個(gè)的點(diǎn)組成的,這和位圖圖像其實(shí)是差不多的。由于每一個(gè)像素都是單獨(dú)染色的,您可以通過以每次一個(gè)像素的頻率操作選擇區(qū)域而產(chǎn)生近似相片的逼真效果,諸如加深陰影和加重顏色。縮小位圖尺寸也會(huì)使原圖變形,因?yàn)榇伺e是通過減少像素來使整個(gè)圖像變小的。同樣,由于位圖圖像是以排列的像素集合體形式創(chuàng)建的,所以不能單獨(dú)操作(如移動(dòng))局部位圖。
二、? C#中對于圖形的支持。
在C#語言中所有有關(guān)于圖形圖像的類全部多被封裝在System.Drawing名詞空間下了,主要的類有Image、Bitmap、metafile源文件。
Object類
↓
MershalByRefObject
↓
Image(抽象類)
↓
Bitmap
Metafile
三、圖形的加載。
在C#語言中想要將指定的圖形加載到我們指定的位置上就要使用Image類,但是這個(gè)類是個(gè)抽象類,在我們以前學(xué)習(xí)抽象類時(shí)我講過,抽象類是不可以構(gòu)造對象的,不過微軟為我們做了幾種專門用來讓抽象類構(gòu)造對象的方式,這些方法全部都在Image的靜態(tài)方法中。
1、FromFile(string str);
//給于指定的圖片路徑。
2、FromFile(string str , bool useEmbeddedColorManagement);
//給予指定的圖片路徑,以及是否使用圖像文件中嵌入的顏色管理。
3、FromStream(Stream stream);
//使用流文件導(dǎo)入圖片,這個(gè)以后將會(huì)在我們學(xué)挽流以后才會(huì)使用到。
四、圖像的繪制以及Image的使用方式。
在我以前講課的時(shí)候曾經(jīng)說過,在C#語言當(dāng)中如果關(guān)系到繪制時(shí),就一定于Graphics繪制類有關(guān)系,當(dāng)然在使用Image進(jìn)行繪制圖片時(shí)也于這個(gè)類有很大的關(guān)系,在這個(gè)類對象的方法中,有一個(gè)方法叫做DrawImage這個(gè)方法中。
1、DrawImage(Image mag,int x,int y);
//給予指定的Image對象,在窗體的X于Y位置上繪制。
2、DrawImage(Image mag,int x,int y,int Width,int Height);
//給予指定的Image對象,在窗體的X于Y位置上按照指定的大小進(jìn)行繪制。
例:
using System;
using System.Drawing;
using System.Windows.Forms;
namespace Hty
{
class MyForm : Form
{
Image mge;
static void Main()
{
Application.Run(new
MyForm());
}
public MyForm()
{
this.Text = "圖形圖像";
mge = Image.FromFile("虎.jpg");
}
protected override void OnPaint(PaintEventArgs e)
{
base.OnPaint(e);
Graphics grfx = e.Graphics;
grfx.DrawImage(mge, 0, 0,this.Width,this.Height);
}
}
}
五、如何在圖像上繪制。
在上邊我們學(xué)會(huì)了應(yīng)該如何在窗體上進(jìn)行繪制圖片,現(xiàn)在我們來學(xué)習(xí)如何在圖片上進(jìn)行繪制于更改。
我們在往窗體上進(jìn)行繪制時(shí),需要通過獲取當(dāng)前窗體的所有信息,同樣的我們要是向往圖片上進(jìn)行繪制,也要獲取圖片當(dāng)前的信息,在Graphics類中有一個(gè)靜態(tài)方法就是專門用來獲取圖片信息提供給要繪制者使用的。
例、Graphics grfx = Graphics.FromImage(Image mag);
//我們只需要把要被繪制的圖片信息放入到這個(gè)方法的參數(shù)中,就可以直接獲取到要繪制的信息了。
六、保存圖片。
在上邊我們學(xué)到了如何在指定的圖片上進(jìn)行繪制,但是當(dāng)我們繪制完后發(fā)現(xiàn),在剛剛繪制上去的東西沒有保存到圖片中,其實(shí)想要將繪制后的圖片進(jìn)行保存需要使用Image類中的Save方法。
1、Save(String strFileName);
//將繪制完后的圖片保存到硬盤中的指定位置。
2、Save(String strFileName,ImageFormat imgfmt);
//將繪制完后的圖片保存到硬盤中的指定位置,并且確認(rèn)要存儲(chǔ)的圖片格式。
ImageFormat是一個(gè)靜態(tài)類,它可以將我們的圖像文件格式轉(zhuǎn)換成指定的格式。例如將Bmp的文件轉(zhuǎn)換成jpg的文件。
七、? ImageFormat類的屬性。
類型
屬性
訪問方式
說明
ImageFormat
Bmp
讀
獲取圖片格式(Bmp)。
ImageFormat
Emp
讀
獲取圖片格式(Emp)。
ImageFormat
Exif
讀
獲取圖片格式(Exif)。
ImageFormat
Jpeg
讀
獲取圖片格式(Jpg)。
ImageFormat
Icon
讀
獲取圖片格式(Icon)。
ImageFormat
Gif
讀
獲取圖片格式(gif)。
ImageFormat
Png
讀
獲取圖片格式(png)。
ImageFormat
Tiff
讀
獲取圖片格式(tiff)。
ImageFormat
Wmf
讀
獲取圖片格式(wmf)。
例:
using System;
using System.Drawing;
using System.Windows.Forms;
using System.Drawing.Imaging;
namespace Hty
{
class MyForm : Form
{
Image mge;
static void Main()
{
Application.Run(new
MyForm());
}
public MyForm()
{
this.Text = "圖形圖像";
mge = Image.FromFile("虎.jpg");
}
protected override void OnPaint(PaintEventArgs e)
{
base.OnPaint(e);
Graphics grfx = e.Graphics;
grfx.DrawImage(mge, 0, 0,this.Width,this.Height);
Graphics grfx2 = Graphics.FromImage(mge);
grfx2.DrawString("虎",
new Font("宋體",200),
Brushes.Black, 100, 100);
mge.Save("虎神.bmp",
ImageFormat.Bmp);
}
}
}
總結(jié)
以上是生活随笔為你收集整理的c#位图转换未矢量图_c# 图形图像 | 学步园的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 驾校一点通电脑版客户端 v7.1 最新P
- 下一篇: 局域网网络流量监控_LINUX常见性能监