2

私は少し未解決の問題の解決策のためにここにいます。解決策が見つからないため、適切なものを検索していない可能性があります。ご協力いただければ幸いです。

したがって、画像をロードするWPFアプリケーションがありますが、ここでは問題はありません。次に、クリックしていくつかのポイントを追加する必要があるので、この機能があります:

 private void ClickMouse(object sender, MouseButtonEventArgs e)
    {
        Point p = e.GetPosition(this);
        schema.PointFromScreen(p);
        var myImage3 = new Image();
        var bi3 = new BitmapImage();
        bi3.BeginInit();
        bi3.UriSource = new Uri(_clickImagePath, UriKind.Relative);
        bi3.EndInit();
        myImage3.Stretch = Stretch.Fill;
        myImage3.Source = bi3;
        myImage3.MinWidth = 30;
        myImage3.MinHeight = 30;
        myImage3.Width = 30;
        myImage3.Height = 30;
        myImage3.Name = _pointName;
        var oMargin = new Thickness(p.X, p.Y, 0, 0);
        myImage3.Margin = oMargin;
        mainCanva.Children.Add(myImage3);
        _listImg.Add(myImage3);
        PointList.Items.Add(_pointName);
    }

問題はここにはありませんが、コンテキストが必要です。

次に、主な問題に移ります。PDFを作成するには、最終的な画像を保存する必要があります。ここで見つけたサンプルコード(http://stackoverflow.com/questions/1824989/how-to-store-system-windows-controls-image-to-local-disk)を使用して、次を使用してjpgファイルに変換します。 ITextsharp。私がPDFに持っているのは最初の写真だけなので、おそらく最初の画像だけを取り、他の作成された画像は取りませんが、それを修正する方法が本当にわかりません。画像ゾーンのスクリーンショットのようなものを作成するための機能はありますか?または、プリンシパルControl.Imageのゾーン内のすべての画像に注意を払う必要がありますか?

ご協力ありがとうございました。

4

1 に答える 1

1

Canvas を画像としてレンダリングするには、次のコードを使用する必要があります。

var rect = new Rect(canvas.RenderSize);
var rtb = new RenderTargetBitmap((int)rect.Right, (int)rect.Bottom, 96d, 96d, System.Windows.Media.PixelFormats.Default);
rtb.Render(canvas);
//encode as PNG
varpngEncoder = new PngBitmapEncoder();
pngEncoder.Frames.Add(BitmapFrame.Create(rtb));

//save to memory stream
using(var ms = new System.IO.MemoryStream())
{
    pngEncoder.Save(ms);

    System.IO.File.WriteAllBytes("logo.png", ms.ToArray());
}

(出典:WPF出力を画像ファイルに書き込む

于 2012-07-27T12:04:27.623 に答える