Grafiken erstellen und anzeigen

06/03/2008 - 10:45 von Hans-J. Ude | Report spam
Hallo Allerseits,

Ich bin komplett neu in asp.net und Webanwendungen überhaupt. Ich habe etwas
Erfahrung in C# gesammelt, aber reichlich WinAPI und MFC gemacht. In C# habe
ich zum Üben ein Programm geschrieben welches numerische Eingaben vom
Benutzer annimmt und daraus eine Grafik berechnet und anzeigt. Das
funktioniert auch soweit auf dem lokalen PC. Nun möchte ich daraus eine
Webanwendung machen.

Mit MFC würde ich die Ausgaben in einen Memory Device Context geben. Damit
habe ich meine Grafik als Bitmap im Speicher. Die kann man evtl. in jpg
konvertieren und speichern. Wie macht man denn sowas unter .net für eine
Webanwendung? Die Dateneingabe stellt kein Problem dar, nur die Ausgabe. Und
es wàre gut wenn man ohne Javascript auskommt. Viele Leute haben das
abgeschaltet und die können das dann nicht nutzen. Die komplette Logik soll
serverseitig laufen.

TIA,
Hajü
 

Lesen sie die antworten

#1 Stefan Falz [MVP]
06/03/2008 - 11:25 | Warnen spam
Hallo Hans,

"Hans-J. schrieb:

Ich bin komplett neu in asp.net und Webanwendungen überhaupt. Ich habe etwas Erfahrung in C# gesammelt, aber reichlich WinAPI und
MFC gemacht. In C# habe ich zum Üben ein Programm geschrieben welches numerische Eingaben vom Benutzer annimmt und daraus eine
Grafik berechnet und anzeigt.



Am sinnvollsten erscheint mir hier ein Handler (ASHX). Nachstehend ein Beispiel
für einen solchen Handler, der eine neue Grafik erzeugt (in deinem Fall kann der
Handler die Datei auch aus dem Dateisystem oder einer Datenbank auslesen, den
Code musst du dann aber selbst reinschreiben :) (Ebenso wie die Umwandlung in
C#, hab das Beispiel nur als VB Code hier :)

[ImageHandler.ashx]
<%@ WebHandler Language="VB" Class="ImageHandler" %>

Imports System
Imports System.Web
Imports System.Drawing
Imports System.Drawing.Imaging
Imports System.Drawing.Drawing2D

Public Class ImageHandler : Implements IHttpHandler

Public Sub ProcessRequest(ByVal ctx As HttpContext) Implements IHttpHandler.ProcessRequest

Dim Output As Bitmap = New Bitmap( 200, 30, PixelFormat.Format24bppRgb )
Dim Graphic As Graphics = Graphics.FromImage( Output )
Dim Address As String = ctx.Request.QueryString( "Address" )

ctx.Response.Clear
ctx.Response.ContentType = "image/gif"
ctx.Response.AddHeader("Content-Disposition","inline;filename=test.gif")

Graphic.DrawString( Address, New Font( "Verdana", 12 ), Brushes.White, 5, 5 )

Output.Save( ctx.Response.outputstream, ImageFormat.GIF )

Graphic.dispose()
Output.dispose()

ctx.Response.End

End Sub

Public ReadOnly Property IsReusable() As Boolean Implements IHttpHandler.IsReusable
Get
Return False
End Get
End Property

End Class

Einbinden kannst du die Bilder dann bspw. so:

<asp:Image ... ImageUrl="~/ImageHandler.ashx?Address=abc" ... />

Tschau, Stefan
Microsoft MVP - Visual Developer ASP/ASP.NET
http://www.asp-solutions.de/ - Consulting, Development
http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community

Ähnliche fragen