0

別のウィンドウのカスタム ツールチップとして使用するユーザー コントロール ライブラリがあります。ユーザー コントロールは、ディレクトリを参照する imagebrush の ImageSource を保持します。ウィンドウ内には、imagebrush と同じディレクトリに画像ファイルを生成する別のクラスがあります。

ただし、実行後に以下のエラーが発生します。コール スタックには、外部コードのみが含まれていました。「指定されたバインディング制約に一致するタイプ 'WpfApplication2.MainWindow' でのコンストラクターの呼び出しで、例外がスローされました。」行番号「4」と行位置「9」

これが私のスニペットです。

UserControl1.xaml

  <UserControl.Resources>
    <Style TargetType="Rectangle">
        <Setter Property="Fill">
            <Setter.Value>
                <ImageBrush  ImageSource="C:\Users\user\Desktop\wpf\WpfApplication2\WpfApplication2\Images/QR.png" Stretch="Fill" />
            </Setter.Value>
        </Setter>
    </Style> 
</UserControl.Resources>

DisplayWindow.xaml

 xmlns:myToolTip="clr-namespace:WpfControlLibrary2;assembly=WpfControlLibrary2"

 <myToolTip:UserControl1 Visibility="Collapsed" x:Name="customToolTip" Width="468" Height="700" />

QRCodeEncoder.cs

   public QrCodeEncodercs(string encodeString)
    {
        QrEncoder qrEncoder = new QrEncoder(ErrorCorrectionLevel.H);
        QrCode qrCode = new QrCode();
        //const string encodeString = "123";
        qrEncoder.TryEncode(encodeString, out qrCode);

        Renderer renderer = new Renderer(11, System.Drawing.Brushes.Black, System.Drawing.Brushes.White);
        renderer.CreateImageFile(qrCode.Matrix, @"C:\Users\user\Desktop\wpf\WpfApplication2\WpfApplication2\Images\QR.png\Images\QR.png",
            ImageFormat.Png);

    }

DisplayWindow.xaml.cs

上記のクラスのコンストラクターを実行すると。上記のエラーが発生しました。

qce = new QrCodeEncodercs(videoName);

実際に何が起こったのですか?ガイダンスはありますか?前もって感謝します。

Edit_ __ _InnerException

 InnerException: System.Runtime.InteropServices.ExternalException
   HResult=-2147467259
   Message=A generic error occurred in GDI+.
   Source=System.Drawing
   ErrorCode=-2147467259
   StackTrace:
        at System.Drawing.Image.Save(String filename, ImageCodecInfo encoder, EncoderParameters encoderParams)
        at Gma.QrCodeNet.Encoding.Windows.Controls.Renderer.CreateImageFile(BitMatrix matrix, String fileName, ImageFormat imageFormat)
        at WpfApplication2.DisplayWindow.QrCodeEncodercs(String encodeString) in c:\Users\user\Desktop\wpf\KinectREAL\WpfApplication2\WpfApplication2\DisplayWindow..xaml.cs:line 127
        at WpfApplication2.DisplayWindow.PopulateVideoListAndFirstVideo() in c:\Users\user\Desktop\wpf\KinectREAL\WpfApplication2\WpfApplication2\DisplayWindow..xaml.cs:line 157
        at WpfApplication2.DisplayWindow..ctor() in c:\Users\user\Desktop\wpf\KinectREAL\WpfApplication2\WpfApplication2\DisplayWindow..xaml.cs:line 79
        at WpfApplication2.MainWindow..ctor() in c:\Users\user\Desktop\wpf\KinectREAL\WpfApplication2\WpfApplication2\MainWindow.xaml.cs:line 45
   InnerException: 
4

2 に答える 2

0

私はいくつかの試みの後になんとか解決することができ、これまでのところうまくいきます。再度、感謝します。

  System.Windows.Media.Imaging.BitmapImage bi = new System.Windows.Media.Imaging.BitmapImage();
        bi.BeginInit();
        bi.UriSource = new   Uri(@"C:\Users\user\Desktop\wpf\WpfApplication2\WpfApplication2\Images\QR.png", UriKind.RelativeOrAbsolute);
        bi.CacheOption = System.Windows.Media.Imaging.BitmapCacheOption.OnLoad;
        bi.EndInit();

        image.Source = bi;
于 2013-01-01T15:18:58.260 に答える
0

これらのGeneric error in GDI+例外は、時々わかりにくいことがあります。私が過去に経験した原因の 1 つは、画像ファイルの拡張子が正しくない場合です (例: GIF 拡張子で保存された JPG)。私の 2 番目の推測は、保存先のファイルのパスにあるファイル名が無効であるということです。ディレクトリは存在しますか?

ファイルが使用中の場合は、一時ディレクトリにコピーしてFile.Copy一時ファイル名を取得できますPath.GetTempFilename().

于 2012-12-31T09:51:38.813 に答える