Benutzer mit den meisten Antworten
Umsetzung matlab in asp.net

Frage
-
Hallo,
Ich bin gerade dabei ein matlab Programm in asp.net umzusetzen. Es gibt zwar ein matlab Compiler dieser ist aber extrem teuer und fällt deswegen aus. (falls jemand eine andere direkte Idee hat immer gerne).
Nun aber zu meiner Frage. Gibt es ein Art übersetzungstool das den Matlab Code direkt in C# oder VB Code umcodiert?
In dem Programm werden am Ende Graphiken bzw. Rechtecke ausgegeben. Wie kann ich das programmatisch umsetzen. In einer Windwos Anwendung wäre das kein Problem aber als Webanwendung???
Vielen Dank
Antworten
-
Hi,
Ich will einfach nur auf Knopfdruck ein Rechteck zeichnen.... hätten Sie vielleicht für diesen Fall ein Beispielcode. Irgendein Schritt fehlt mir.
HTML Kenntnisse brauchst Du natürlich, wenn Du eine Webanwendung schreiben willst.
Eine Grafik in liegt immer in einer externen Resource, direktes Zeichnen in das Control bzw. auf die Oberfläche wie in WinForms ist nicht möglich (außer mit was clientseitigem, das ist aber ein komplett anderes Thema).
Als Beispiel:
<html> <body> <div>Text</div> <img src="Images/Bild1.jpg" /> </body> </html>
Anstelle einer Grafikdatei kann man bspw. auch einen Handler (ASHX) angeben, der das Bild erzeugt.
<html> <body> <div>Text</div> <img src="Handler/CreateImage.ashx?Width=400&Height=200" /> </body> </html>
In dem Fall sieht der Handler bspw. so aus:
<%@ WebHandler Language="VB" Class="CreateImage" %> Imports System Imports System.Web Imports System.Drawing Imports System.Drawing.Imaging Imports System.Drawing.Drawing2D Public Class CreateImage : Implements IHttpHandler Public Sub ProcessRequest(ByVal ctx As HttpContext) Implements IHttpHandler.ProcessRequest Dim Width As Int32 Dim Height As Int32 Int32.TryParse( ctx.Request.QueryString( "Width" ), Width ) Int32.TryParse( ctx.Request.QueryString( "Height" ), Height ) Dim Output As Bitmap = New Bitmap( Width + 50, Height + 30, PixelFormat.Format24bppRgb ) Dim Graphic As Graphics = Graphics.FromImage( Output ) ctx.Response.Clear ctx.Response.ContentType = "image/gif" ctx.Response.AddHeader("Content-Disposition","inline;filename=test.gif") Graphic.FillRectangle( Brushes.White, 0, 0, Width + 50, Height + 30 ) Graphic.DrawRectangle( Pens.Black, 25, 15, Width, Height ) 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
Ist natürlich nur ein Beispiel, weder optimiert noch auf ggfs. auftretende Probleme überprüft, ..., läuft aber und zeigt, wie es vom Grundsatz her geht.
Den Handler als CreateImage.ashx im Projekt speichern.
Gruß, 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- Als Antwort vorgeschlagen Thorsten DörflerEditor Donnerstag, 4. März 2010 22:05
- Als Antwort markiert Robert BreitenhoferModerator Freitag, 5. März 2010 07:19
Alle Antworten
-
Hi,
Nun aber zu meiner Frage. Gibt es ein Art übersetzungstool das den Matlab Code direkt in C# oder VB Code umcodiert?
wenn das in einer Windows Anwendung kein Problem wäre, warum dann in einer Webanwendung? Der Code für die Erzeugung der Grafiken ist identisch. Lagere das in eine DLL aus, die kannst Du dann von Windows- und Webanwendungen heraus verwenden.
In dem Programm werden am Ende Graphiken bzw. Rechtecke ausgegeben. Wie kann ich das programmatisch umsetzen. In einer Windwos Anwendung wäre das kein Problem aber als Webanwendung???
Ob es ein Übersetzungstool gibt, kann ich dir nicht sagen. Fraglich wäre halt, ob der überhaupt ohne Matlab funktionieren kann (das wäre ja wohl dein Ziel, oder?)
Gruß, 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
-
Hallo ,
Erstmal danke für die schnelle Antwort.
Ich müsste einfach Vierecke anhand x und y Position zeichnen lassen. Dies wollte ich mit dem eventpaint args oder so ähnlich :) , machen den verweis gibt es aber nur unter systems.windwos.... etc. und ich konnte nicht drauf zugreifen. Wie geht man dabei vor? Oder gibt es vielleicht sogar ein Code Beispiel ?
Vielen Dank -
Um es nochmal kurz zu verdeutlichen:
http://msdn.microsoft.com/de-de/library/5y289054.aspx
https://www.microsoft.com/germany/msdn/connection/vb2005/vaubekien/folge08/ZeichnenMitGDIPlus.mspx
Die Funktionen brauch ich für meine Webanwendung.
- Bearbeitet Robert BreitenhoferModerator Donnerstag, 4. März 2010 12:24 Formatierung
-
Hi,
Ich müsste einfach Vierecke anhand x und y Position zeichnen lassen. Dies wollte ich mit dem eventpaint args oder so ähnlich :) , machen den verweis gibt es aber nur unter systems.windwos.... etc. und ich konnte nicht drauf zugreifen. Wie geht man dabei vor? Oder gibt es vielleicht sogar ein Code Beispiel ?
dann wären der Namespace System.Drawing bzw. die dort enthaltenen Klassen und Strukturen, bspw. Rectangle deine Freunde.
Gruß, 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
-
Hallo,
Nach stundenlangem ausprobieren bin ich übel gescheitert.
Ich will einfach nur auf Knopfdruck ein Rechteck zeichnen.... hätten Sie vielleicht für diesen Fall ein Beispielcode. Irgendein Schritt fehlt mir.
Hier mein "Code" :)
Imports System.Drawing Partial Public Class _Default Inherits System.Web.UI.Page Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load End Sub Protected Sub button1_Click(ByVal sender As Object, ByVal e As EventArgs) Handles button1.Click Dim gg As Graphics Dim rechteck1 As Rectangle = New Rectangle(10, 10, 100, 100) Dim Pen As Pen = New Pen(Color.AliceBlue) gg.DrawRectangle(Pen, rechteck1) End Sub End Class
Schon mal vielen Dank!!! -
Hi,
Ich will einfach nur auf Knopfdruck ein Rechteck zeichnen.... hätten Sie vielleicht für diesen Fall ein Beispielcode. Irgendein Schritt fehlt mir.
HTML Kenntnisse brauchst Du natürlich, wenn Du eine Webanwendung schreiben willst.
Eine Grafik in liegt immer in einer externen Resource, direktes Zeichnen in das Control bzw. auf die Oberfläche wie in WinForms ist nicht möglich (außer mit was clientseitigem, das ist aber ein komplett anderes Thema).
Als Beispiel:
<html> <body> <div>Text</div> <img src="Images/Bild1.jpg" /> </body> </html>
Anstelle einer Grafikdatei kann man bspw. auch einen Handler (ASHX) angeben, der das Bild erzeugt.
<html> <body> <div>Text</div> <img src="Handler/CreateImage.ashx?Width=400&Height=200" /> </body> </html>
In dem Fall sieht der Handler bspw. so aus:
<%@ WebHandler Language="VB" Class="CreateImage" %> Imports System Imports System.Web Imports System.Drawing Imports System.Drawing.Imaging Imports System.Drawing.Drawing2D Public Class CreateImage : Implements IHttpHandler Public Sub ProcessRequest(ByVal ctx As HttpContext) Implements IHttpHandler.ProcessRequest Dim Width As Int32 Dim Height As Int32 Int32.TryParse( ctx.Request.QueryString( "Width" ), Width ) Int32.TryParse( ctx.Request.QueryString( "Height" ), Height ) Dim Output As Bitmap = New Bitmap( Width + 50, Height + 30, PixelFormat.Format24bppRgb ) Dim Graphic As Graphics = Graphics.FromImage( Output ) ctx.Response.Clear ctx.Response.ContentType = "image/gif" ctx.Response.AddHeader("Content-Disposition","inline;filename=test.gif") Graphic.FillRectangle( Brushes.White, 0, 0, Width + 50, Height + 30 ) Graphic.DrawRectangle( Pens.Black, 25, 15, Width, Height ) 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
Ist natürlich nur ein Beispiel, weder optimiert noch auf ggfs. auftretende Probleme überprüft, ..., läuft aber und zeigt, wie es vom Grundsatz her geht.
Den Handler als CreateImage.ashx im Projekt speichern.
Gruß, 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- Als Antwort vorgeschlagen Thorsten DörflerEditor Donnerstag, 4. März 2010 22:05
- Als Antwort markiert Robert BreitenhoferModerator Freitag, 5. März 2010 07:19
-
Schon mal vielen vielen dank,
Ich würde um erhlich zu sein lieber den einfachen weg ohne Handler gehen.
Wenn ich es richtig verstanden habe, muss zuerst ein Bild erstellt werden, in dieses können dann verschiedene Formen eingefügt werden.
Aber soweit komm ich gar nicht, es wird nichtmal ein ganz normales Bild angezeigt. Hab alle Ordner in der asp.net Einstellung freigegeben FF und IE probiert. Es ist unglaublich... -
Hi,
Ich würde um erhlich zu sein lieber den einfachen weg ohne Handler gehen.
das ist der einfache Weg. Einen anderen gibt es nicht (naja, ok, es gibt immer einen Weg aber einen einfacheren eher nicht :). Du kannst in einer Webform kein Bild zeichnen und das dann in die Webform malen. Entweder gibst Du ein Bild aus oder HTML oder was anderes. Mischformen gibts da nicht. Du bewegst dich halt in einer Webanwendung, da ist vieles komplett anders als in Offlineapplikationen.
Wenn ich es richtig verstanden habe, muss zuerst ein Bild erstellt werden, in dieses können dann verschiedene Formen eingefügt werden.
Nimm doch bitte mal genau das, was ich gepostet habe und bau das in ein Testprojekt ein. Pfade, ... müssen natürlich alle stimmen. Um das zu prüfen, kannst Du http://deinserver/pfad/Handler/CreateImage.ashx?Width=400&Height=200 mal direkt im Browser aufrufen.
Aber soweit komm ich gar nicht, es wird nichtmal ein ganz normales Bild angezeigt. Hab alle Ordner in der asp.net Einstellung freigegeben FF und IE probiert. Es ist unglaublich...
Ich hab dir das mal als Beispiel online gestellt.
http://testaccount.sfwnet2.de/CreateImage/
Das ganze als Download:
http://testaccount.sfwnet2.de/CreateImage/CreateImage.zip
HTH
Gruß, 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 -
Hallo,
Hab ich genauso ausprobiert. Es kommt nur ein Platzhalter für das Bild.
Aber um das überhaupt zu erreichen musste ich erst den Teil
'<%@ WebHandler Language="VB" Class="CreateImage" %>
auskommentieren weil er ein ungültiges Zeichen angemeckert hat.
Wenn ich den Handler direkt einegbe kommt ein 404 Fehler:
Serverfehler in der Anwendung /. -------------------------------------------------------------------------------- Die Ressource kann nicht gefunden werden. Beschreibung: HTTP 404. Die gesuchte Ressource oder eine ihrer Abhängigkeiten wurde möglicherweise entfernt, umbenannt oder ist vorübergehend nicht verfügbar. Überprüfen Sie folgenden URL, und stellen Sie sicher, dass er richtig geschrieben wurde. Angeforderter URL: /Handler/CreateImage.ashx -------------------------------------------------------------------------------- Versionsinformationen: Microsoft .NET Framework-Version:2.0.50727.4927; ASP.NET-Version:2.0.50727.4927
Und wie schon geschrieben, es werden nicht mal normal eingefügte .html Bilder angezeigt. Stimmt da was mit IIS nicht??
-
Hi,
Aber um das überhaupt zu erreichen musste ich erst den Teil
Öhm. Da ist eher dein Server kaputt bzw. ASP.NET gar nicht erst aktiviert.
'<%@ WebHandler Language="VB" Class="CreateImage" %>
auskommentieren weil er ein ungültiges Zeichen angemeckert hat.
Unter IIS 6 muss man ASP.NET noch explizit in der IIS MMC aktivieren.
IIS MMC
-> Webdiensterweiterungen
-> ASP.NET 2.0.50727
-> Erlauben
Unter IIS 7 muss ASP.NET bei der Installation mit angewählt werden (defaultmäßig ist es das nicht). Man kann ASP.NET auch nachinstallieren, wenns nicht vorhanden ist.
Und wie schon geschrieben, es werden nicht mal normal eingefügte .html Bilder angezeigt. Stimmt da was mit IIS nicht??
Also bspw. auch kein bild.jpg? Das wäre ziemlich komisch. Bei ASP.NET ists klar, wenn es nicht installiert bzw. erlaubt ist. Dann sendet IIS einen 404 Fehler. Aber Bilder sind eigentlich immer verfügbar. In dem Fall fehlt evtl. der Mimetype (auch einzutragen über die IIS MMC) aber das wäre hier doch arg verwunderlich.
Gruß, 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
-
Hallo,
Ich werf jetzt mal alle .net Sachen runter und setz neu auf.
Ich werd dann berichten :)
Übrigens habe ich es vorhin geschafft zumindest ein kleines Quadrat anzuzeigen, ich habe den Handler direkt reingezogen und so einen Link gesetzt danach noch die width und heigt Wert auf einen absoluten Wert gesetzt dann hats funktioniert... alles sehr verwirrend...
-
UPDATE:
Es ist geschafft!!!!
Vielen vielen dank!!!
Ich Idiot hatte den Handler nicht in den Ordner handler geschoben, somit hat er den Handler natürlich nicht gefunden....
Das Tag ganz oben <%@ .... > hab ich einfach weggelassen geht auch ohne. Graphiken werden auch wieder angezeigt. (warum auch immer).
Nochmal vielen dank für die Hilfe!!!! -
Hi,
Es ist geschafft!!!!
das freut mich :)
Vielen vielen dank!!!Das Tag ganz oben <%@ .... > hab ich einfach weggelassen geht auch ohne. Graphiken werden auch wieder angezeigt. (warum auch immer).
Hmmm. Wundert mich. Das sollte eigentlich nicht gehen. Aber Ok, lassen wirs mal so :)
Wenn Du noch die Postings, die für dich hier im Thread am hilfreichsten waren, als Antwort markieren könntest, wär das prima :)
Gruß, 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