SQLの窓

2010年06月05日


VB.net : 画像の上にテキストを半透明で出力する

単純出力( 半透明なし )

Winofsql_text1


半透明出力用の背景透明の画像

Text_on_img

半透明出力

Winofsql_text3
Imports System.Drawing
Imports System.Drawing.Imaging
Imports System.Drawing.Text

Module MyModule

' ********************************************************
' 画像の上にテキスト
' ********************************************************
Sub Main()

	' 文字列の配列
	Dim argv As String()

	' コマンドラインの取得
	argv = System.Environment.GetCommandLineArgs()

	' 引数がある場合
	if System.Environment.GetCommandLineArgs.Length > 1 then
		Console.WriteLine(argv(1))
	else
		Console.WriteLine("変換するビットマップファイルを指定して下さい")
		Return
	end if

	' ********************************************************
	' 単純書き出し
	' ********************************************************
	' Bitmap をファイルのパスから作成
	Dim bmp As New Bitmap(argv(1))
	' キャンバス
	Dim gra As Graphics = Graphics.FromImage(bmp)

	' 書き出すテキストのフォントを作成
	Dim myFont As Font = New Font(FontFamily.GenericSansSerif, _
		20, FontStyle.Bold)

	' 白色で書きだす
	Dim myBrush As New SolidBrush(Color.FromArgb(255,255,255))

	' アンチエイリアス設定
	gra.TextRenderingHint = TextRenderingHint.AntiAliasGridFit

	' 書き出し
	gra.DrawString( "lightbox", myFont, myBrush, 70, 28 )

	bmp.Save((argv(1).Split("."))(0) + "_text1.png", Imaging.ImageFormat.Png)

	bmp.Dispose()

	' ********************************************************
	' 半透明書き出し
	' ********************************************************
	' Bitmap をファイルのパスから作成
	bmp = New Bitmap(argv(1))
	' キャンバス
	gra = Graphics.FromImage(bmp)

	' 同一サイズの Bitmap
	Dim bmp4Text As New Bitmap(bmp.Width, bmp.Height)
	' キャンバス
	Dim gra4Text As Graphics = Graphics.FromImage(bmp4Text)

	' 透明ブラシ
	Dim myBaseBrush As New SolidBrush(Color.FromArgb(0,0,0,0))
	' 塗りつぶし位置
	Dim rects As Rectangle() = {New Rectangle(0, 0, bmp4Text.Width, bmp4Text.Height)}
	' 塗りつぶして、透明のキャンバスにする
	gra4Text.FillRectangles(myBaseBrush, rects)

	' アンチエイリアス設定
	gra4Text.TextRenderingHint = TextRenderingHint.AntiAliasGridFit

	' 書き出し
	gra4Text.DrawString( "lightbox", myFont, myBrush, 70, 28 )

	' 途中経過
	bmp4Text.Save((argv(1).Split("."))(0) + "_text2.png", Imaging.ImageFormat.Png)

	' 半透明出力用属性
	Dim att As New ImageAttributes
	Dim cm As New ColorMatrix
	' 半透明
	cm.Matrix00 = 1		' R
	cm.Matrix11 = 1		' G
	cm.Matrix22 = 1		' B
	cm.Matrix33 = 0.5F	' A
	cm.Matrix44 = 1
	att.SetColorMatrix(cm)

	' 半透明書き出し
	gra.DrawImage( _
		bmp4Text, _
		New Rectangle(0, 0, bmp.Width, bmp.Height), _
		0, _
		0, _
		bmp.Width, _
		bmp.Height, _
		GraphicsUnit.Pixel, _
		att _
	)

	' 半透明書き出し結果
	bmp.Save((argv(1).Split("."))(0) + "_text3.png", Imaging.ImageFormat.Png)

	' Bitmap の解放
	bmp.Dispose()

End Sub

End Module



posted by lightbox at 2010-06-05 01:36 | VB.NET : テクニカル | このブログの読者になる | 更新情報をチェックする
container 終わり



フリーフォントで簡単ロゴ作成
フリーフォントでボタン素材作成
フリーフォントで吹き出し画像作成
フリーフォントではんこ画像作成
ほぼ自由に利用できるフリーフォント
フリーフォントの書体見本とサンプル
画像を大きく見る為のウインドウを開くボタンの作成

CSS ドロップシャドウの参考デモ
イラストAC
ぱくたそ
写真素材 足成
フリーフォント一覧
utf8 文字ツール
右サイド 終わり
base 終わり