LEADTOOLS ナレッジベース

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

以下のように画像を元に戻す処理を実装することで可能です。

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

サンプルコード(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();
}

実際の動作は.NETコントロール チュートリアルの「UndoDrawText」をご覧ください。

 

関連情報

0 コメント

記事コメントは受け付けていません。