Hallo zusammen,
ich habe bei meiner Hauptanwendung als Zielplattform "Any CPU" eingestellt. Diese wird also auf 32Bit-System als 32Bit und auf 64Bit-System als 64Bit ausgeführt.
Meine referenzierte Klassenbibliothek muss leider unter 32 Bit laufen. Diese greift auf meinen installierten Canon RAW Codex zu, welcher leider nur in 32Bit existiert.
Ist es möglich, mit meiner 64Bit-Anwendung auf meine 32Bit-Klassenbibliothek zuzugreifen?
Ich weiß, ich könnte meine Anwendung auch insgesamt auf 32Bit umstellen, würde aber aus verschiedenen Gründen (bsp. Perfomance) gerne bei 64Bit (bzw. Any CPU) bleiben.
Vielen Dank & Grüße
Dennis
Hallo zusammen,
ich habe eine Lösung gefunden 😃
Anstatt einer Viewbox benutze ich nun einen ScrollViewer, wo ich beide Scrollbars ausblende. Funktioniert perfekt.
Grüße
Dennis
Hallo zusammen,
meine Anwendung soll ein Bild anzeigen können, welches sich mit einem Schieberegler zoomen lässt. Das klappt alles. Ich benutze dafür eine Viewbox und ein ScaleTransform.
Das Problem ist allerdings folgendes: wenn ich das Bild so zoome, dass es größer als die Viewbox wird, tritt das Bild über die Viewbox hinaus.
Etwas schwer zu erklären - ich habe mal ein Beispielprojekt angehangen.
Ich könnte Controls (z.B. Grids) um die Viewbox herum platzieren, welche im Vordergrund sind. Das klappt auch. Allerdings benutze ich in meiner Hauptanwendung den Glass-Effekt von Windows Vista/7 und muss die Oberfläche deshalb an der entsprechenden Stelle von Controls freihalten.
Habt ihr vielleicht eine Lösung, wie ich das heraustreten des Bildes verhindern kann? Vielen Dank.
Grüße
Dennis
Danke, ich werds mir gleich mal anschauen.
So, hier kommt die Lösung 😃 Nachdem ich tagelang gesucht und gesucht habe.. die Lösung ist so verdammt einfach. Folgender Quellcode-Schnispel sollte Erklärung genug sein:
public BitmapSource Execute(BitmapSource bitmap)
{
double newWidth = bitmap.PixelWidth + config.Thickness * 2;
double newHeight = bitmap.PixelHeight + config.Thickness * 2;
RenderTargetBitmap renderTarget = new RenderTargetBitmap(
(int)newWidth,
(int)newHeight,
bitmap.DpiX,
bitmap.DpiY,
PixelFormats.Default);
DrawingVisual drawingVisual = new DrawingVisual();
DrawingContext drawingContext = drawingVisual.RenderOpen();
Rect imageRect = new Rect(config.Thickness, config.Thickness, bitmap.PixelWidth, bitmap.PixelHeight);
Pen pen = new Pen(Brushes.Black, config.Thickness);
using (drawingContext)
{
drawingContext.DrawRectangle(Brushes.Black, pen, new Rect(0, 0, newWidth, newHeight));
drawingContext.DrawImage(bitmap, imageRect);
}
renderTarget.Render(drawingVisual);
return renderTarget as BitmapSource;
}
dr4g0n76, vielen Dank für deinen Link. Das sieht sehr gut und vielseitig aus! Ich muss nur gucken, wie ich das ganze in WPF abbilden kann..
Ja talla, du hast Recht.
Ich werde mich mal damit beschäftigen und dann versuchen mit der WriteableBitmap zu arbeiten. Mal sehen ob mir das gelingt 😃
Vielen Dank & Grüße
Dennis
Hallo dr4g0n76,
wenn ich auf deinen Link klicke bekomme ich folgende Fehlermeldung:
Die Seite wurde gelöscht ODER der Zugriff auf diese Seite wurde verweigert.
Auf der Oberfläche wird der Effect problemlos angewendet. Ich habe das Testprojekt mal in den Anhang getan.
Das ist interessant.. ich hatte vorher die Postion des ImageControls auf der Oberfläche vorher mit Margins festgelegt und _Stretch _auf "Uniform" gestellt.
Nun habe ich die Margins entfernt und _Stretch _auf "None" gestellt.
<Image Name="imageControl" Stretch="None" />
Ergebnis: Das gespeicherte Bild ist nun nicht schwarz - jetzt ist es hellblau. Hä? 😃
Ich habe es mal folgendermaßen versucht:
this.imageControl.Source = new BitmapImage(new Uri(@"C:\test\go.jpg"));
this.imageControl.Effect = new MyEffect(@"C:\test\ps\ZoomBlur.ps");
Das Bild blieb auf der Oberfläche unverändert. Komisch - ich hatte im Kopf, dass dieser Filter funktioniert. Nun habe ich einen anderen genommen, welcher mit den obigen beiden Zeilen funktioniert (InvertColor). Wenn ich das Bild allerdings speichere, ist dies komplett schwarz.
Irgendwie funktioniert das mit dem Rendern wohl nicht.