제목이 .....입니다.Silverlight/클립 보드의 클립 보드에서 이미지 가져 오기
나는 해결책을 찾을 수 있었다 here.
그러나 솔루션은 먼저 이미지를 임시 파일에 기록하고 스트림으로 읽습니다.
그래서 내가 솔루션을 수정하는 것을 시도하고있다, 여기 ... 내가 6시간을 위해 노력 해왔다 사례입니다 : 대신 사용하여 스트림에서 직접 읽어사례 1)
:
internal static extern int GdipSaveImageToStream(GpImage *image, IStream* stream, GDIPCONST CLSID* clsidEncoder, GDIPCONST EncoderParameters* encoderParams);
으로 변 :
[DllImport("gdiplus.dll", ExactSpelling=true, CharSet=CharSet.Unicode)]
internal static extern int GdipSaveImageToStream(IntPtr image, IntPtr stream, [In] ref Guid Encoder, IntPtr encoderParams);
,
나는 스트림 매개 변수로 IntPtr.Zero 전달하려고했으나를 IntPtr로 출력 결과는 여전히 제로 ... 실패 ...
사례 2)
의 해보자는 ... 게시물 중 하나와 같은 픽셀 데이터를 얻을 말했다. 적어도 내가 데이터를 볼 수 있습니다 이제
[DllImport("gdi32.dll")]
static extern int GetBitmapBits(IntPtr hbmp, int cbBuffer, [Out] byte[] lpvBits);
: 나 이미지의 크기를 알고 가정의가 GetBitMapBits를 사용 해보자 그래서
[DllImport("user32.dll")]
static extern IntPtr GetClipboardData(uint uFormat);
:
는 내가 전화 GetClipboardData로 HBITMAP을 얻을 수있어 복사하지만 GetBitMapBits되는 것은 ... 16 비트 윈도우 실패
사례 3)이다
,좋아 ......
, 그래서 ... 픽셀 데이터를 얻을 수[DllImport("gdi32.dll")]
public static extern int GetDIBits(IntPtr hdc, IntPtr hbmp, uint uStartScan,
uint cScanLines, [Out] byte[] lpvBits, ref BitmapInfo lpbmi, uint uUsage);
를 GetDIBits을 사용해야하지만 클립 보드에 대한 장치 컨텍스트를 얻을 수있는 지금 문제는 ....입니다
그리고 더 이상 어떻게 심지어 너비 및 클립 보드 이미지의 높이에 대해 알고 .....
는 WPF /의 WinForm에서 우리는 쉽게 할 수 FromHBitmap 방법있을 것입니다. 필자는 파일로 작성하고 읽는 것 외에 다른 방법을 생각할 수 없다. 또는이 문제를 해결하기 위해 COM을 작성하십시오 ....
누구나 해결책이 있습니까?
구글, MSDN 및 실험 시간 후
나는 같은 목표를 달성하려고 노력하고있다. 솔루션에 대한 자세한 내용을 제공 할 수있는 기회가 있습니까? – McAden