Fetstil Fetstil Kursiv Understrykning linje färgläggning tabellverk Punktlista Nummerlista Vänster Centrerat högerställt Utfyllt Länk Bild htmlmode
  • Forum & Blog
    • Forum - översikt
      • .Net
        • asp.net generellt
        • c#
        • vb.net
        • f#
        • silverlight
        • microsoft surface
        • visual studio .net
      • databaser
        • sql-server
        • databaser
        • access
        • mysql
      • mjukvara klient
        • datorer och komponenter
        • nätverk, lan/wan
        • operativsystem
        • programvaror
        • säkerhet, inställningar
        • windows server
        • allmänt
        • crystal reports
        • exchange/outlook
        • microsoft office
      • mjukvara server
        • active directory
        • biztalk
        • exchange
        • linux
        • sharepoint
        • webbservers
        • sql server
      • appar (win/mobil)
      • programspråk
        • c++
        • delphi
        • java
        • quick basic
        • visual basic
      • scripting
        • asp 3.0
        • flash actionscript
        • html css
        • javascript
        • php
        • regular expresssion
        • xml
      • spel och grafik
        • DirectX
        • Spel och grafik
      • ledning
        • Arkitektur
        • Systemutveckling
        • krav och test
        • projektledning
        • ledningsfrågor
      • vb-sektioner
        • activeX
        • windows api
        • elektronik
        • internet
        • komponenter
        • nätverk
        • operativsystem
      • övriga forum
        • arbete karriär
        • erbjuda uppdrag och tjänster
        • juridiska frågor
        • köp och sälj
        • matematik och fysik
        • intern information
        • skrivklåda
        • webb-operatörer
    • Posta inlägg i forumet
    • Chatta med andra
  • Konto
    • Medlemssida
    • Byta lösenord
    • Bli bonsumedlem
    • iMail
  • Material
    • Tips & tricks
    • Artiklar
    • Programarkiv
  • JOBB
  • Student
    • Studentlicenser
  • KONTAKT
    • Om pellesoft
    • Grundare
    • Kontakta oss
    • Annonsering
    • Partners
    • Felanmälan
  • Logga in

Hem / Forum översikt / inlägg

Posta nytt inlägg


Bild (bmp, jpeg) av kontroll (treeView)

Postades av 2005-08-25 15:29:25 - Benny Jonsson, i forum c# (c-sharp), Tråden har 12 Kommentarer och lästs av 588 personer

Jag vill kunna göra en bmp eller jpeg av min treeView. I stort sätt göre en skärmdump av kontrollern fast då utan scrollbars)

Någon som har en bra idee hur man skapar en bild utifrån en kontroll?


Svara

Sv: Bild (bmp, jpeg) av kontroll (treeView)

Postades av 2005-08-26 14:12:42 - Per Hultqvist

Jag kan inte svara exakt på hur du skall göra, men kanske kan du ha någon nytta av mitt program i programarkivet : Programarkivet:Skärmdumpar i C# (screenshots)

Om du skickar in windowshandlen för treeviewen borde du få en screenshot av endast den, men det är klart att om inte alla noder är synliga så kommer det ju inte att bli bra. Det har jag ingen lösning på...

Fast när jag tänker efter har jag gjort en utskrift av en trädstruktur i ActiveReports en gång, men då fick jag så att säga rita alla linjer och ikoner själv, och det var inte helt lätt. Tyvärr tillhör den koden en kund och inte mig, så jag kan inte dela med mig av den...


Svara

Sv:Bild (bmp, jpeg) av kontroll (treeView)

Postades av 2005-08-26 16:02:29 - Benny Jonsson

Testade dina klasser och det stämmer ja att det "bara" tar med vad som är synligt på skärmen så det går inte att fuska med att rita ut trädet utanför skärmen och ta en dump på den där :(


Svara

Sv: Bild (bmp, jpeg) av kontroll (treeView)

Postades av 2005-08-26 20:46:06 - Niklas Jansson

Nu kanske det är just vad ni har pratat om, men skulle man inte kunna göra en "extra" treeview som är enorm, göra den osynlig, men ändå trigga ett paint-event på något sätt?


Svara

Sv:Bild (bmp, jpeg) av kontroll (treeView)

Postades av 2005-08-27 14:07:33 - Oskar Johansson

Om treeviewen inte använder sin egna scroll utan använder .nets scroll (dvs. t.ex. att den ligger i en container, containern har autoscroll påslaget. Treeviewen är så stor som den behöver) så kan man enkelt skicka ett paint-event till treeviewen för att få rubbet. Problemet är dock att sådan som inte syns kommer inte att synas...

Den variant som låter mest lovande är nog Niklas variant; skapa som sagt en ny, enorm sak. Lägg den på t.ex. ett eget fönster, visa dock inte fönstret (men se till att den har en handle) och loopa in rubbet i den. Expandera sedan rubbet och skicka wm_paint-meddelandet till treeviewen


Svara

Sv: Bild (bmp, jpeg) av kontroll (treeView)

Postades av 2005-08-29 09:50:14 - Benny Jonsson

OK. Hur skickar jag ett "wm_paint" meddelande till en treewiev. (Visa gärna med C# kod :) )
Och var din tanke sedan att jag skulle kunna använda "Per Hultqvist" klass där jag tar och köra ".GetScreenShot(treeView1.Handle)"?


Svara

Sv:Bild (bmp, jpeg) av kontroll (treeView)

Postades av 2005-08-30 21:44:26 - Oskar Johansson

Nope, tanken är att du ska skicka ett window message med win32 api:t SendMessage. Jag har ingen aning om hur mycket du har använt externa dll:er (unmanaged) så jag utgår ifrån det; dumt att överarbeta ;)

Kollade lite snabbt på WM_PAINT-meddelandet, en liten rättelse behövs: Du ska skicka ett WM_PRINT-meddelande

Det första du behöver är följande program: http://www.mentalis.org/agnet/apiviewer.shtml för att få tag på alla konstanter samt SendMessage-funktionen.

På följande sida ser du det du behöver veta om WM_PRINT-meddelandet: http://msdn.microsoft.com/library/default.asp?url=/library/en-us/gdi/pantdraw_3qwk.asp

Som du ser ska WPARAM vara ett HDC. Din HDC får du genom:

IntPtr hdc = ditt_graphics_objekt.GetHdc();
//SendMessage någonting, här kommer kontrollen att rita på ditt graphics-objekt
ditt_graphics_objekt.ReleaseHdc(hdc);

Som du ser är det första parameter till SendMessage ett hWnd, dvs. en handle till ett fönster. Den handle motsvarar:

IntPtr hWnd = vilken_kontroll_som_helst.Handle;

Innan du anropar SendMessage måste du se till att ditt graphics-objekt är stort nog (eller snarare din bild bakom)


Svara

Sv: Bild (bmp, jpeg) av kontroll (treeView)

Postades av 2005-08-31 14:00:38 - Benny Jonsson

Skall prova när jag får tid. Men att köra "unmanaged" är ju lite tråkigt. Lär ju aldrig funka om man försöker köra programmet i mono sen :(.

Finns det fler förslg på lösningar så tar jag görna emot!


Svara

Sv:Bild (bmp, jpeg) av kontroll (treeView)

Postades av 2005-08-31 15:26:53 - Oskar Johansson

Tja, ska du köra managed tror jag att du måste köra .net 2.0 ;)


Svara

Sv:Bild (bmp, jpeg) av kontroll (treeView)

Postades av 2005-09-01 11:40:45 - Per Hultqvist

Detta verkar definitivt vara något du skall titta på :
http://www.codeproject.com/csharp/PrintTreeView.asp


Svara

Sv: Bild (bmp, jpeg) av kontroll (treeView)

Postades av 2005-09-01 11:49:44 - Benny Jonsson

Verkar vara en bra bit på vägen :)
Nu skall jag bara se hur man kn få det till att bli en bild istället ;)


Svara

Sv:Bild (bmp, jpeg) av kontroll (treeView)

Postades av 2005-09-01 18:09:19 - Oskar Johansson

Saxat från koden:

<code>
// Returns an image of the specified width and height, of a control represented by handle.
private Image GetImage(IntPtr handle, int width, int height) {
IntPtr screenDC = GetDC(IntPtr.Zero);
IntPtr hbm = CreateCompatibleBitmap(screenDC, width, height);
Image image = Bitmap.FromHbitmap(hbm);
Graphics g = Graphics.FromImage(image);
IntPtr hdc = g.GetHdc();
SendMessage(handle, 0x0318 /*WM_PRINTCLIENT*/, hdc, (long)(0x00000010 | 0x00000004 | 0x00000002));
g.ReleaseHdc(hdc);
ReleaseDC(IntPtr.Zero, screenDC);
return image;
}
</code>

Det är unmanaged, och det är ett litet trevligt window message; WM_PRINTCLIENT (kan inte skillnaden mellan den och bara WM_PRINT, men, men)


Svara

Sv: Bild (bmp, jpeg) av kontroll (treeView)

Postades av 2005-09-02 11:12:30 - Benny Jonsson

Funkar bra, Tackar!


Svara

Nyligen

  • 09:09 Vill du köpa medicinska tester?
  • 12:47 Vem beviljar assistansen – kommune
  • 14:17 Någon med erfarenhet av hemstädnin
  • 14:14 Bör man använda sig av en båtförme
  • 14:12 Finns det någon intressant hundblo
  • 14:25 Tips på verktyg för att skapa QR-k
  • 14:23 Tips på verktyg för att skapa QR-k
  • 20:52 Fungerer innskuddsbonuser egentlig

Sidor

  • Hem
  • Bli bonusmedlem
  • Läs artiklar
  • Chatta med andra
  • Sök och erbjud jobb
  • Kontakta oss
  • Studentlicenser
  • Skriv en artikel

Statistik

Antal besökare:
Antal medlemmar:
Antal inlägg:
Online:
På chatten:
4 569 166
27 952
271 704
1 260
0

Kontakta oss

Frågor runt konsultation, rådgivning, uppdrag, rekrytering, annonsering och övriga ärenden. Ring: 0730-88 22 24 | pelle@pellesoft.se

© 1986-2013 PelleSoft AB. Last Build 4.1.7169.18070 (2019-08-18 10:02:21) 4.0.30319.42000
  • Om
  • Kontakta
  • Regler
  • Cookies