Freitag, 27. April 2007

Transparente Bitmaps im .NET Compact Framework

Da immer wieder das Problem auftritt das Beispielsweise PNG-Bilder trotz Transparenz im Compact Framework nicht transparent erscheinen gibt es folgende Lösung um das Problem zu lösen.

Dazu wird die Methode DrawImage mit folgender Überladung aus dem System.Graphics Namespace verwendet. Zu beachten ist das nicht alle Überladungen wie man sie aus dem normalen Framework kennt verfügbar sind.
Public Sub DrawImage(ByVal image As System.Drawing.Image, ByVal destRect As System.Drawing.Rectangle, ByVal srcX As Integer, ByVal srcY As Integer, ByVal srcWidth As Integer, ByVal srcHeight As Integer, ByVal srcUnit As System.Drawing.GraphicsUnit, ByVal imageAttr As System.Drawing.Imaging.ImageAttributes)
image
Das Bild welches gezeichnet werden soll.

desRect
Das Rectangle in welches das Bild gezeichnet werden soll. Dieses kann direkt per "new Rectangle(x, y, w, h)" im Methodenaufruf erstellt werden.

srcX, srcY, srcWidth, srcHeight
Der Bereich welcher einen Ausschnitt oder das gesamte Bild darstellt. Wenn man das ganze Bild darstellen möchte gibt man hier einfach die Daten des image-Objekts an.

srcUnit
Die Auswahl beschränkt sich sowieso nur auf "Pixel".

imageAttr
Darauf komme ich gleich zurück.

Damit wird zwar das Bild nun gezeichnet, allerdings noch nicht Transparent. Dazu muss man vorher ein Objekt vom Typ ImageAttributes instanzieren.
Dim imgAttr AS ImageAttributes

Anschliessend weist man der SetColorKey-Methode des imgAttr Objekts die Farbe zu welche transparent erscheinen soll. Man muss zwei Farben angeben, gibt aber einfach zweimal die selbe an. Beispiel mit rot.
imgAttr.SetColorKey(Color.red, Color.red)

Nun muss nur noch die DrawImage-Methode aufgerufen werden und um das imgAttr ergänzt werden und schon erhält man ein tranparentes Bild. Wichtig ist dass das Bild als Bitmap gespeichert ist und den Bereich welcher transparent erscheinen soll z.B. rot eingefärbt hat.

Freitag, 20. April 2007

Microsoft Visual Studio "Orcas" Beta 1 released

Microsoft hat nun die erste Betaversion des neuen IDE mit dem Codenamen "Orcas" veröffentlicht. Leider wird die neue Version von Visual Studio nicht wie angekündigt 2007 erscheinen sondern eher 2008. Besonders interessant dürfte die bessere Unterstützung für Web 2.0 und AJAX Anwendungen sein. Ebenso das neue LinQ welches mit dem .Net Framework 3.5 veröffentlich wird.

Weitere Informationen sowie die Downloads sind auf der Microsoft Webseite zu finden. Klick!

CSS-Konformität in aktuellen Browsern

Wer schonmal eine Webseite entwickelt und vor allem gestaltet hat kennt es: Manche Seitenteile sehen in verschiedenen Browsern unterschiedlich aus. Am deutlichsten fällt es bei der Verwendung von CSS (Cascading Style Sheets).

Aufgrund der Problematik wurde von WaSP (Web Standards Project) ein Test mit dem Namen Acid2 entwickelt welcher Renderingfehler der Browser aufdeckt in dem er ausgiebig die Prinzipien von HTML und die CSS-Fähigkeiten Testet.

Ergebnisse nach dem Besuch der Seite: Mozilla Firefox und Internet Explorer 7 sind nicht kompatibel zu den Spezifikationen der W3C. Browser wie Opera, Safari und Konqueror hingegen sind konform.

Link: Acid2

Donnerstag, 19. April 2007

Datatable sortieren

Eine DataTable lässt sich in VB.net recht simpel sortieren. Dabei wird die DefaultView der DataTable sortiert und anschliessend anstatt der DataTable an das Object (z.B. ein GridView) gebunden.

Dim dtTheData As System.Data.DataTable
Dim vwTheData As System.Data.DataView

vwTheData = dtTheData.DefaultView
vwTheData.Sort = "Column DESC"

Object.DataSource = vwTheData
Object.DataBind()

ASP Validators auf AJAX Updatepaneln

Scheinbar funktionieren nicht alle ASP Controls einwandfrei auf AJAX Updatepaneln. So zum Beispiel die Validators. Ich habe festgestellt das die Validators bei erstmaligem laden der Seite zwar funktionieren, aber nach dem ersten Update des Updatepanels den Dienst, in Form eines Javascripfehlers "classname undefined" verweigern.

Nach kurzer suche im Internet bin ich auf den Blog von Matt Gibbs gestossen welcher dazu eine Lösung parat hat. Dort gibt es ein Set von neuen Validatoren welche die neue API von AJAX verwenden und somit auch auf Updatepanels funktionieren.

Alles was man dazu tun muss ist die beiliegende *.dll in das Bin Verzeichnis der Webanwendung zu kopieren, die *.dll zu referenzieren und schlussendlich noch ein TagMapping in der web.config zu erstellen. Den Code dazu könnt ihr dem oben genannten Blog entnehmen.