画像に描画したテキストを変更できますか?

文書番号 : 34154     文書種別 : 使用方法     登録日 : 2012/10/12     最終更新日 : 2014/10/07
文書を印刷する
対象製品
LEADTOOLS 17.5J Imaging Pro Suite
詳細
以下のように画像を元に戻す処理を実装することで可能です。

①画像をRasterImageオブジェクトに読み込んだ際に、Cloneメソッドで別のRasterImageオブジェクトにも画像を設定しておきます。
②画像にテキストを描画します。
③変更したい場合に画像を①で用意しておいた画像に戻します。

サンプルコード(VB.NET)
Private undoImage As RasterImage

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
  ' 画像をビューアにロードします。
  Dim codecs As New RasterCodecs()
  RasterImageViewer1.Image = codecs.Load("..¥..¥..¥..¥..¥..¥Images¥Image1.cmp")

  undoImage = RasterImageViewer1.Image.Clone
End Sub

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
  ' 画像のグラフィックコンテナを作成し、文字列を描画します。
  Dim container As RasterImageGdiPlusGraphicsContainer = New RasterImageGdiPlusGraphicsContainer(RasterImageViewer1.Image)

  ' フォント、サイズ、色を設定します。
  Dim drawFont As New Font("Meiryo", 20)
  Dim drawBrush As New SolidBrush(Color.White)

  ' 文字列を描画します。
  container.Graphics.DrawString("LEADTOOLS", drawFont, drawBrush, 10, 10)
  RasterImageViewer1.Refresh()
End Sub

Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
  ' 初期画像に戻します。
  RasterImageViewer1.Image = undoImage
  undoImage = RasterImageViewer1.Image.Clone
End Sub

サンプルコード(C#)
private RasterImage undoImage;

private void Form1_Load(object sender, EventArgs e)
{
  // 画像をビューアにロードします。
  RasterCodecs codecs = new RasterCodecs();
  rasterImageViewer1.Image = codecs.Load(@"..¥..¥..¥..¥..¥..¥Images¥Image1.cmp");

  undoImage = rasterImageViewer1.Image.Clone();
}

private void button1_Click(object sender, EventArgs e)
{
  // 画像のグラフィックコンテナを作成し、文字列を描画します。
  RasterImageGdiPlusGraphicsContainer container = new RasterImageGdiPlusGraphicsContainer(rasterImageViewer1.Image);

  // フォント、サイズ、色を設定します。
  Font drawFont = new Font("Meiryo", 20);
  SolidBrush drawBrush = new SolidBrush(Color.White);

  // 文字列を描画します。
  container.Graphics.DrawString("LEADTOOLS", drawFont, drawBrush, 10, 10);
  rasterImageViewer1.Refresh();
}

private void button2_Click(object sender, EventArgs e)
{
  // 初期画像に戻します。
  rasterImageViewer1.Image = undoImage;
  undoImage = rasterImageViewer1.Image.Clone();
}

実際の動作はSP1で追加された製品のチュートリアル「UndoDrawText」をご覧ください。
関連情報
キーワード
HowTo 画像処理