日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > C# >内容正文

C#

C#使用GDI+绘制高质量图和字体

發布時間:2024/3/26 C# 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 C#使用GDI+绘制高质量图和字体 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

對于GDI+,在正常的操作,Bitmap-- Graphcis -- DrawImage或者DrawString?,生成圖片的話,會產生很多雜點,或者是圖片質量不穩定..尤其是在讀取圖片后,生成縮略圖之后,文件會被壓縮而失真..

主要原因是因為沒有重新設置Graphics的幾個屬性..

1.Graphics.SmoothingMode屬性: 例如SmoothingMode.HighQuality可以產生高質量圖片,但是效率低.

2.Graphics.CompositingQuality 屬性: 例如:CompositingQuality.HighQuality也是產生高質量圖,效率低下.

3.Graphics.InterpolationMode 屬性,例如:InterpolationMode.HighQualityBicubic與前兩個也是同樣的效果.

這三個屬性的值都是enum,具體的enum參數可以查看MSDN的說明..在這里就我不贅述..
如果是對圖片進行放大,縮小,可以調整Graphics.CompositingQuality Graphics.InterpolationMode 兩個屬性..如果是圖片生成,則可以調整Graphics.SmoothingMode屬性..

另外一個問題就是關于文字生成的..按照正常的模式生成的文字,可以很明顯的看到文字帶有鋸齒..解決的辦法也是需要修改Graphics的一個屬性: Graphics.TextRenderingHint...注意一點,修改TextRenderingHint的話,需要引入System.Drawing.Text,例如:Graphics.TextRenderingHint = System.Drawing.Text.TextRenderingHint.ClearTypeGridFit;

?經過對這四個屬性的修改,操作大部分的圖片之后,產生的結果都是比較讓人滿意的..

在這里提供一個簡單的例子..是生成印章簽名的效果..提供四種字體選擇..并產生一個圖片..如果你的機器中沒有安裝指定的幾種字體,你需要把字體修改一下...直接把代碼拷貝..就可以看到效果...

ASPX頁面:
?

?1<%@?Page?language="c#"?Codebehind="underWrite.aspx.cs"?AutoEventWireup="false"?Inherits="testItem.movie.underWrite"?%>
?2<!DOCTYPE?HTML?PUBLIC?"-//W3C//DTD?HTML?4.0?Transitional//EN"?>
?3<HTML>
?4????<HEAD>
?5????????<title>underWrite</title>
?6????????<meta?name="GENERATOR"?Content="Microsoft?Visual?Studio?.NET?7.1">
?7????????<meta?name="CODE_LANGUAGE"?Content="C#">
?8????????<meta?name="vs_defaultClientScript"?content="JavaScript">
?9????????<meta?name="vs_targetSchema"?content="http://schemas.microsoft.com/intellisense/ie5">
10????</HEAD>
11????<body?MS_POSITIONING="GridLayout">
12????????<form?id="Form1"?method="post"?runat="server">
13????????????<asp:Image?id="Image1"?style="Z-INDEX:?101;?LEFT:?208px;?POSITION:?absolute;?TOP:?360px"?runat="server"></asp:Image>
14????????????<asp:HyperLink?id="HyperLink1"?style="Z-INDEX:?105;?LEFT:?304px;?POSITION:?absolute;?TOP:?312px"
15????????????????runat="server"?NavigateUrl="../mv/index.html">大頭帖</asp:HyperLink>
16????????????<asp:TextBox?id="name"?style="Z-INDEX:?104;?LEFT:?208px;?POSITION:?absolute;?TOP:?144px"?runat="server"
17????????????????MaxLength="4"></asp:TextBox>
18????????????<asp:RadioButtonList?id="fontType"?style="Z-INDEX:?103;?LEFT:?208px;?POSITION:?absolute;?TOP:?184px"
19????????????????runat="server"?Width="240px">
20????????????????<asp:ListItem?Value="方正黃草簡體"?Selected="True">方正黃草簡體</asp:ListItem>
21????????????????<asp:ListItem?Value="漢鼎繁淡古">漢鼎繁淡古</asp:ListItem>
22????????????????<asp:ListItem?Value="漢鼎繁印篆">漢鼎繁印篆</asp:ListItem>
23????????????????<asp:ListItem?Value="經典繁桟亭">經典繁桟亭</asp:ListItem>
24????????????</asp:RadioButtonList>
25????????????<asp:Button?id="bu"?style="Z-INDEX:?102;?LEFT:?208px;?POSITION:?absolute;?TOP:?312px"?runat="server"
26????????????????Text="?刻?字?"></asp:Button>
27????????</form>
28????</body>
29</HTML>
30

CS文件:

??1using?System;
??2using?System.Collections;
??3using?System.ComponentModel;
??4using?System.Data;
??5using?System.Drawing;
??6using?System.Drawing.Drawing2D;
??7using?System.IO;
??8using?System.Web;
??9using?System.Web.SessionState;
?10using?System.Web.UI;
?11using?System.Web.UI.WebControls;
?12using?System.Web.UI.HtmlControls;
?13
?14namespace?testItem.movie
?15{
?16????///?<summary>
?17????///????????生成印章簽名
?18????///?</summary>

?19????public?class?underWrite?:?System.Web.UI.Page
?20????{
?21????????protected?System.Web.UI.WebControls.Image?Image1;
?22????????protected?System.Web.UI.WebControls.RadioButtonList?fontType;
?23????????protected?System.Web.UI.WebControls.HyperLink?HyperLink1;
?24????????protected?System.Web.UI.WebControls.Button?bu;
?25????????protected?System.Web.UI.WebControls.TextBox?name;
?26????????
?27????????private?void?Page_Load(object?sender,?System.EventArgs?e)?
?28????????{
?29????????????Image1.Visible?=?false;
?30????????}

?31
?32????????Web?窗體設計器生成的代碼
?53
?54????????private?void?Button1_Click(object?sender,?System.EventArgs?e)
?55????????{
?56????????????string?Name?=?name.Text;
?57????????????if?(?Name.Length?<?4?)?{
?58????????????????Response.Write(?"請輸入最少4個字符!"?);
?59????????????????return;
?60????????????}

?61????????????
?62????????????string?FontName?=?fontType.SelectedValue;
?63????????????
?64????????????int?fontSize?=?36;
?65????????????int?x?=?10;
?66????????????int?y?=?10;
?67????????????
?68????????????switch(?FontName?)?{
?69????????????????case?"方正黃草簡體":
?70????????????????????x?=?-8;
?71????????????????????y?=?-2;
?72????????????????????fontSize?=?42;
?73????????????????????break;
?74????????????????????
?75????????????????case?"漢鼎繁淡古":
?76????????????????????x?=?-10;
?77????????????????????y?=?-2;
?78????????????????????break;
?79????????????????
?80????????????????case?"漢鼎繁印篆":
?81????????????????????x?=?-15;
?82????????????????????y?=?-2;
?83????????????????????break;
?84????????????????
?85????????????????case?"經典繁桟亭":
?86????????????????????fontSize?=?34;
?87????????????????????x?=?-10;
?88????????????????????y?=?-3;
?89????????????????????break;????????????????????
?90????????????}

?91????????????
?92????????????Bitmap?bm?=?new?Bitmap(110,100,System.Drawing.Imaging.PixelFormat.Format32bppArgb);
?93????????????Font?font?=?new?Font(FontName,fontSize,FontStyle.Bold);
?94????????????
?95????????????Graphics?g?=?Graphics.FromImage(?bm?);
?96????????????
?97????????????g.TextRenderingHint?=??System.Drawing.Text.TextRenderingHint.ClearTypeGridFit;
?98????????????
?99????????????/*????這里的三個屬性可以根據情況開放.
100?????????????*?
101????????????//g.CompositingQuality?=?CompositingQuality.HighQuality;?
102????????????//g.SmoothingMode?=?SmoothingMode.HighQuality;?
103????????????//g.InterpolationMode?=?InterpolationMode.HighQualityBicubic;?
104????????????
105????????????*/

106????????????g.Clear(Color.Red);????????//賦予圖像一個背景色
107????????????
108????????????g.DrawString(?Name.Substring(2,1),font,new?SolidBrush(Color.White),0,2?);
109????????????g.DrawString(?Name.Substring(3,1),font,new?SolidBrush(Color.White),0,45-y?);
110????????????g.DrawString(?Name.Substring(0,1),font,new?SolidBrush(Color.White),35-x,2?);
111????????????g.DrawString(?Name.Substring(1,1),font,new?SolidBrush(Color.White),35-x,45-y?);
112????????????g.Dispose();
113????????????//設置保存路徑
114????????????bm.Save(?Server.MapPath("../upload/c.jpg"),System.Drawing.Imaging.ImageFormat.Jpeg?);
115????????????bm.Dispose();
116????????????//顯示產生的圖片
117????????????Image1.ImageUrl?=?Server.MapPath("../upload/c.jpg")?;
118????????????Image1.Visible?=?true;
119????????}

120????}

121}

122

總結

以上是生活随笔為你收集整理的C#使用GDI+绘制高质量图和字体的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。