Canvas screenshot
Übersicht

X0rBetreff: Canvas screenshot |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Hallo. Da die Grafikprogrammierung in BM ja nicht mehr mit buffers funktioniert, wollte ich wissen, wie man eigentlich einen screenshot von einem canvas machen kann.
Ich habe gehört, dass es mit pixmaps geht, aber ich kenne mich mit pixmaps gar nicht aus. Kann mir einer ein example schreiben, bei dem ich pixels auf einem canvas zeichnen kann und dann einen screenshot vom canvas machen kann. Danke im voraus. |
||
![]() |
D2006Administrator |
![]() Antworten mit Zitat ![]() |
---|---|---|
Geh doch ins englische Board, die magst du doch eh viel lieber.
![]() |
||
Intel Core i5 2500 | 16 GB DDR3 RAM dualchannel | ATI Radeon HD6870 (1024 MB RAM) | Windows 7 Home Premium
Intel Core 2 Duo 2.4 GHz | 2 GB DDR3 RAM dualchannel | Nvidia GeForce 9400M (256 MB shared RAM) | Mac OS X Snow Leopard Intel Pentium Dual-Core 2.4 GHz | 3 GB DDR2 RAM dualchannel | ATI Radeon HD3850 (1024 MB RAM) | Windows 7 Home Premium Chaos Interactive :: GoBang :: BB-Poker :: ChaosBreaker :: Hexagon :: ChaosRacer 2 |
Dreamora |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Um einen Screenshot von einem TGraphics (nicht canvas das ist ein GUI element das ein TGraphics hält) zu machen, musst du ein Pixmap grabben und dieses dann mittels savepixmap speichern. | ||
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen. |
![]() |
Freeman |
![]() Antworten mit Zitat ![]() |
---|---|---|
so könnte man das zum Bleistift machen
Code: [AUSKLAPPEN] Strict Global window:tgadget=CreateWindow("test",0,0,400,500) Global canvas:Tgadget=CreateCanvas(0,0,400,400,window) While Not KeyDown(key_escape) WaitEvent() Select EventID() Case event_windowclose End Case event_gadgetpaint SetGraphics CanvasGraphics(canvas) Cls DrawLine 0,0,32,32 DrawLine 32,0,0,32 DrawOval 0,0,32,32 Local image:timage=CreateImage(32,32,1,DYNAMICIMAGE|MASKEDIMAGE) GrabImage image,0,0 For Local i=1 To 100 DrawImage image,Rnd(640),Rnd(480) Next Local pixmap:TPixmap=GrabPixmap(0,0,400,400) Flip Local path:String=RequestFile("Speichern unter","png",True) SavePixmapPNG(pixmap,path) End End Select Wend Fr3eMaN |
||
X0r |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Admin, was soll dieses Angemache?
Danke, freeman. Genau sowas meinte ich. Und es ist ja wohl egal, ob ich es TCanvas nenne oder sonst was. Solange ihr mich versteht, wie freeman, ist alles inordnung. |
||
Dreamora |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
D's reaktion war eine Reaktion auf deine Reaktion auf die konstruktive Kritik zu deiner Page.
Nicht ganz objektiv, aber gleichartig wie deine ... |
||
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen. |
- Zuletzt bearbeitet von Dreamora am Mo, Mai 08, 2006 19:29, insgesamt einmal bearbeitet
X0r |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Das war. Vergisst es.
So, eine Frage noch: Kann man das auch anders machen, mit dem "screenshot"? Nicht dass ich das jetzt zu schwer finde *wär ja gelacht*, aber ich will alle möglichkeiten wissen. Außerdem, wie kann ich einem geladenen image einen Alpha Wert setzen? Geht das überhaupt? Kann mir einer ein Programm schreiben, bei dem man mit ein Bild laden kann und dem dann ein Alpha Wert zugewiesen wird. Danke. |
||
Dreamora |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Alpha auf Image:
SetBlend Alphablend SetAlpha alphawert# ' Zeichenoperationen Das mit dem Screenshot geht nicht wirklich anders mit BM eigenen Befehlen. Es mag vielleicht ein Modul geben, das direkt den Backbuffer anzapft und die Daten in eine Pixmap kopiert, da das schneller ist als Grabben ... ansonsten wirst du dich wohl selbst in die DX API und OpenGL API reinarbeiten müssen um herauszufinden, wie das dann getan werden müsste. PS: Genau diese Art von Reaktion ist das Problem. Wunder dich da bitte nicht, wenn die sonst immer helfenden sich auch entsprechend verhalten. (speziell bei den Aussagen in erwähntem Thread). Wir sind alle Menschen und die Leute die dir helfen und antworten, tun dies aus freien Stücken. Also behandel sie bitte künftig mit entsprechendem Respekt. Andernfalls wird es entsprechende Konsequenzen haben wegen Verletzen der Netiquette. Dies ist lediglich ein gut gemeinter Rat. |
||
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen. |
X0r |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Was ist denn sinvoller für ein Grafikprogramm, eine Pixmap zu laden uns sie dann auf den Canvas zeichnen oder ein image normal zu laden und den dann zu zeichnen?
Image, oder? Mit pixmaps kann man keine Kollisionsabfrage machen, oder? |
||
Dreamora |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Images, ja. Zumindest bis zu nem gewissen Punkt.
Pixmap hat aber den Vorteil, dass du mittels Paste die Pixmap in eine andere beliebige Pixmap packen kannst. Images müssen jedoch bei jedem Durchlauf neu gezeichnet werden. Jedoch hast du recht, dass dann Kollisionen nicht mehr gehen, ausser du benötigst nur Rect Collision. Die braucht keine Images. |
||
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen. |
X0r |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Na toll. Dan bringen es Pixmaps garnicht. Was soll denn der Vorteil an ihnen sein? Dass sie so langsam sind?
Bis zu was für einem gewissen Punkt? Bitte genauer? Und wozu sollen pixmaps, außer fürs speichern, in einem Grafikprogramm gut sein? |
||
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group