Mittwoch, November 4th, 2009 | by Christian Zauner | Posted in Blog, LieberLieber Kunden, Microsoft Surface, WPF | 1 Comment »

vl.n.r Pichler (pressetext); Siegl (LL); Hillebrand (Signa); Schabus (MS); Mistelbacher (MS)
Heute früh waren wir bei unserem Kunden Signa und haben gemeinsam mit Microsoft die auf MS Surface basierte Lösung Signa Surface in einem Gespräch mit Mag. Thomas Pichler von pressetext.at vorgestellt. Signa Surface ist seit ca. 4 Wochen im Livebetrieb und es sind bereits über 40GB an multimedialen Inhalten eingepflegt, die schon fast das gesamte Portfolio der zur Signa Holding gehörenden Tochterfirmen abdecken. Laut Franz Hillebrand, dem Manager Group-IT bei Signa , geht das Konzept voll auf. Die Besucher der Signa Holding im Palais Harrach in Wien, können am Signa Surface kaum vorbeigehen, ohne sich damit zu beschäftigen und das Feedback ist einfach nur: “Wow!” (http://pressetext.com/news/091104038/microsoft-surface-bringt-erhofften-wow-effekt/)
“Wow” – dachten wir uns auch bei den Bildern und Renderings der Villen am Gardasee, die bei Signa Development im Moment in die Verkaufsphase gehen …

… alleine schon der Ausblick ….
… wobei auch der Ausblick von unserem Büro nicht schlecht ist, oder ?

Mittwoch, Juli 15th, 2009 | by Simon Bitschnau | Posted in .NET Framework, C#, WPF | No Comments »
Schon oft gesehen in Beispielen zu Image Interop ist folgender Code:
BitmapSource bitmap = System.Windows.Interop.Imaging.CreateBitmapSourceFromHBitmap(source.GetHbitmap(), IntPtr.Zero, Int32Rect.Empty, System.Windows.Media.Imaging.BitmapSizeOptions.FromEmptyOptions());
Das funktioniert soweit auch hat aber einen entscheidenden Fehler, auf den man schnell kommt, wenn man sich die MSDN Dokumentation anschaut.
Der Handle der von GetHBitmap zurückgeliefert wird, muss nämlich manuell wieder freigegeben werden. Und zwar mit der DeleteObject Methode:
[System.Runtime.InteropServices.DllImport("gdi32.dll")]
public static extern bool DeleteObject(IntPtr hObject);
Donnerstag, Juli 9th, 2009 | by Daniel Siegl | Posted in .NET Framework, WPF | No Comments »
Control.Invoke gibt es in der schönen neuen WPF Welt leider nicht mehr. Darum ein kurzer Post ohne viel Erklärung wie man das in WPF Anwendungen löst.
private void SetPicture(BitmapSource newImageFromThread)
{
if (Camera.Dispatcher.CheckAccess())
{
// The calling thread owns the dispatcher, and hence the UI element
Camera.Source = newImageFromThread;
}
else
{
newImageFromThread.Freeze();
// Invokation required
Camera.Dispatcher.Invoke(DispatcherPriority.Normal, (Action)delegate(){ Camera.Source =newImageFromThread; });
}}
Der eigentliche Spass war jedoch das BitmapSource. Dieses ist leider nicht MultiThread fähig, deswegen muß man BitmapSource.Freeze(); aufrufen! Hoffe das erspart euch irgendwann ein wenig suchen