2012-12-31 4 views
0

다른 창에 대한 사용자 정의 툴팁으로 사용할 사용자 정의 라이브러리가 있는데 사용자 정의 컨트롤은 디렉토리를 참조하는 이미지 브러시의 ImageSource를 보유합니다. 창 안에는 이미지 브러시와 같은 디렉토리에 이미지 파일을 생성하는 또 다른 클래스가 있습니다.이미지 파일을 만들 때 오류가 발생했습니다.

그러나 실행 후 오류가 발생합니다. 호출 스택에 외부 코드 만 포함되었습니다. '지정된 바인딩 제약 조건과 일치하는'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: 
+0

확인 InnerException –

+0

안녕하세요. 답장을 보내 주셔서 감사합니다. 내 innerexception을 이미 업데이트했습니다. 날 확인 해줄 수있어? 나는 혼란 스럽다. 감사합니다 – user1884304

+0

당신이 저장하고있는 폴더에 대한 쓰기 권한이 있는지 확인하십시오 imge (http://weblogs.asp.net/anasghanem/archive/2009/02/28/solving-quot-a-generic-error-occurred-in- gdi-quot-exception.aspx)도이 토론을 살펴 봅니다. (http://stackoverflow.com/questions/1053052/a-generic-error-occurred-in-gdi-jpeg-image-to-memorystream) –

답변

0

Generic error in GDI+ 예외는 항상 비밀이 될 수 있습니다. 과거에 경험 한 한 가지 원인은 이미지 파일의 확장자가 올바르지 않은 경우입니다 (예 : JPG에 GIF 확장명을 저장 한 경우). 두 번째 추측은 저장하려는 파일의 경로에있는 파일 이름이 유효하지 않은 것입니다. 디렉토리가 존재합니까?

파일을 사용중인 경우 File.Copy이라는 임시 디렉토리에 복사하고 Path.GetTempFilename()이라는 임시 파일 이름을 가져올 수 있습니다.

+0

예, 경로가 존재했습니다. 다른 파일 이름을 사용하여 저장할 수 있습니다. 내 생각 엔 이미지 브러시를 잡고 열고 여는 이미지 소스이므로 파일을 다시 쓸 수 없습니다. 어떻게하면 내 문제를 해결할 수 있을지 생각해? 어쨌든 답장을 보내 주셔서 감사합니다. – user1884304

+0

업데이트 된 답변보기 – Echilon

+0

답장을 보내 주셔서 감사합니다. 나는 이미 그 문제를 해결했다. – user1884304

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; 
관련 문제