Results 1 to 10 of 10

Thread: Bitmap operaties in ASP.NET applicatie

  1. #1

    Bitmap operaties in ASP.NET applicatie

    Ik zoek naar een methode om runtime een plaatje aan te maken; ik gebruik een een bitmap (JPEG image) als achtergrond, en wil hierin een string zetten, om het resultaat vervolgens terug te geven aan de gebruiker. In een WinForms applicatie heb je een Handle naar de canvas. Echter ontbreekt deze in een ASP.NET applicatie, wat moet ik doen om alsnog de GraphicsPath functionaliteit te gebruiken?

    Code:
    procedure TWebForm1.Button1_Click(sender: System.Object; e: System.EventArgs);
    var
       bm : Bitmap;
       im : System.Drawing.Image;
       fname : string;
       gp : GraphicsPath;
    begin
       fname := Request.PhysicalApplicationPath + 'images\btn_bg.jpg';
       im := System.Drawing.Image.FromFile(fname);
       bm := Bitmap.Create(im);
       gp := GraphicsPath.Create;
       // bitmap operations here
       gp.AddString('You have xx : yy hours remaining',FontFamily.Create('Comic Sans MS'),
                    Integer(FontStyle.Bold or FontStyle.Italic),144,
                    Point.Create(10,20),StringFormat.GenericTypoGraphic);
       MyGraphics.DrawPath(Pens.Black,gp);
       MyGraphics.DrawImage(bm);
       //bm.Save(Response.OutputStream,ImageFormat.jpeg);
    end;

  2. #2
    SillyMember
    Join Date
    May 2003
    Location
    Gent
    Posts
    7,725
    Je vraag is me niet geheel duidelijk. Wat is MyGraphics?
    Dit zou moeten werken (ik gebruik hier niet de Bitmap, maar ineens de Image, met de Bitmap zou het ook moeten kunnen):
    Code:
    var
       im : System.Drawing.Image;
       fname : string;
       gp : GraphicsPath;
       Canvas: Graphics;
    begin
       fname := Request.PhysicalApplicationPath + 'images\btn_bg.jpg'
       im := System.Drawing.Image.FromFile(fname);
       gp := GraphicsPath.Create;
       gp.AddString('You have xx : yy hours remaining',FontFamily.Create('Comic Sans MS'),
                    Integer(FontStyle.Bold or FontStyle.Italic),144,
                    Point.Create(10,20),StringFormat.GenericTypoGraphic);
       Canvas :=  Graphics.FromImage(im);
       Canvas.DrawPath(Pens.Black,gp);
       im.Save(Response.OutputStream,ImageFormat.jpeg);
      // cleaning up !
       gp.Free;
       Canvas.Free;
       im.Free;
    end;
    De Graphics.FromImage() werkt dus ook met een Bitmap.
    All methodologies are based on fear. -- Kent Beck.

  3. #3
    Bedankt voor je antwoord.

    Ik had inmiddels de methode Graphics.FromImage() ook gevonden.
    Rest alleen nog de vraag hoe ik de Canvas kan opslaan naar een stream .. Tot nu toe heb ik nog geen methode kunnen vinden

  4. #4
    SillyMember
    Join Date
    May 2003
    Location
    Gent
    Posts
    7,725
    Originally posted by Vortex
    Rest alleen nog de vraag hoe ik de Canvas kan opslaan naar een stream .. Tot nu toe heb ik nog geen methode kunnen vinden
    Waarom zou je dat willen doen? Een Graphics object (GDI+) is geassocieerd met een device context, een Graphics object serializeren heeft dus weinig zin (net zoals dat met GDI het geval is).

    Ook nog (in antwoord op je eerste post?) :je kan met Graphics.GetHdc de device context (GDI) opvragen (wel zonder de font!).

    Wat probeer je eigenlijk te bereiken?
    All methodologies are based on fear. -- Kent Beck.

  5. #5
    Ik wil op deze manier een soort image generator maken. In een bep. forum plaats ik een img tag die verwijst naar de webservice / applicatie.. iedere keer dat er een request komt wordt er als output een ander (banner) plaatje terug gegeven.. dat is een statisch achtergrond plaatje... daar overheen wil ik een status tekst weergeven, dat dynamisch is

    [edit]
    met Canvas.GetHDC crasht ie op het moment dat ik System.Drawing.Image.FromHbitmap(hdc) aanroep
    [/edit]
    Last edited by Vortex; 10-Jul-04 at 22:20.

  6. #6
    SillyMember
    Join Date
    May 2003
    Location
    Gent
    Posts
    7,725
    Je hebt GetHdc toch niet nodig?
    Jouw door mij bewerkte code in mijn eerste post doet dat toch al?
    All methodologies are based on fear. -- Kent Beck.

  7. #7
    De code werkt in de zin van het wegschrijven van plaatjes.. Alleen wordt de image weggeschreven ipv de inhoud van de canvas waar de tekst op staat

  8. #8
    In de code van Dirk wordt er direct naar de image geschreven. Weliswaar met behulp van een Canvas maar let op dat dat niet de Canvas van je "formulier" is. Er is geen formulier, er is alleen maar HTML dat naar je browser wordt verstuurd. Ik heb het idee dat je naar de canvas van je formulier op zoek bent.
    Marcel

  9. #9
    SillyMember
    Join Date
    May 2003
    Location
    Gent
    Posts
    7,725
    Volgens mij is 'het probleem' dus eigenlijk al opgelost. Zie bijvoorbeeld (ja ik weet dat de klok van de server niet juist loopt).
    Dit is een html pagina met in de body:
    Code:
       <img border="0" name="image1" src ="webform1.aspx">
    Tenzij de TS verwacht/van plan is in de oproepende pagina de afbeelding nog te bewerken. Als dat het geval is kan je denk ik beter omgekeerd werken en eventuele 'parameters' doorgeven (aan webform1.aspx, of via session) aan de ASP.NET pagina die de image laadt (hier webform1.aspx ), en dan onmiddelijk bewerkt (ongeveer zoals in de code enkele posts hierboven).
    De code in webform1.aspx is in het voorbeeld:
    Code:
    var
       Image : System.Drawing.Image;
       Path : GraphicsPath;
       Canvas: Graphics;
    begin
       Image := System.Drawing.Image.FromFile(FImageLocation);
       Path := GraphicsPath.Create;
       Thread.CurrentThread.CurrentCulture := CultureInfo.Create('nl-NL');
       Path.AddString('Het is ' + DateTime.Now.ToString ,
             FontFamily.Create('Comic Sans MS'),
             Integer(FontStyle.Bold or FontStyle.Italic),24,
             Point.Create(20,168),StringFormat.GenericTypoGraphic);
       Canvas :=  Graphics.FromImage(Image);
       Canvas.DrawPath(Pens.Black,Path);
       Image.Save(Response.OutputStream,ImageFormat.jpeg);
       // cleaning up !
       Path.Free;
       Canvas.Free;
       Image.Free;
    end;
    All methodologies are based on fear. -- Kent Beck.

  10. #10
    hartelijk dank voor alle moeite.. hij bleek altijd al te werken.. ik zag alleen geen teksten omdat de positie waarop ik de teksten toonde buiten de image bounds lagen
    Last edited by Vortex; 13-Jul-04 at 23:18.

Thread Information

Users Browsing this Thread

There are currently 1 users browsing this thread. (0 members and 1 guests)

Similar Threads

  1. Replies: 31
    Last Post: 04-Jul-04, 20:13
  2. Onlogische duplicate resource error
    By TjeerdB in forum Algemeen
    Replies: 11
    Last Post: 27-Jan-03, 15:34

Bookmarks

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •