Deutsch
Forum

Sourcecode PictureBox ähnlich Delphi Paintbox

 
- Seite 1 -


 
11.08.2006  
 



 
- Seite 2 -


Hm echt?

Schau mal ob bei meinem Demo hier das Bild auch zerissen wird.

PS: Exe im Dateianhang.
KompilierenMarkierenSeparieren
 {$cleq}
declare inframe1&,inframe2&,pic&,ps&,fle$
DEF createpicstatic(6) control(STATIC,@$(2),$5400010E,@%(3),@%(4),@%(5),@%(6),@%(1),2000, %HInstance)

Proc createplane

    Parameters __hd&,__xp&,__yp&,__xs&,__ys&,__xr&,__yr&
    __hd&=Control(LISTBOX,, $50300000,__xp&,__yp&,0,0,__hd&,0,%hinstance)
    Case __yr&<__ys&:__yr&=If(__xr&>__xs&,__ys&-25,__ys&-10)
    Sendmessage(__hd&,404,__xr&,0);sendmessage(__hd&,416,0,1)

    Whileloop __yr&;Addstring(__hd&,);Wend

        Setwindowpos __hd&=__xp&,__yp&-__xs&,__ys&;0
        Return Control(STATIC,,1409286400,0,0,If(__xr&<__xs&,__xs&,__xr&),__yr&+10,__hd&,0,%Hinstance,$0)

    Endproc

    windowstyle ( 512 | 8 | 16 )
    window 0,0 - 600,600
    fle$:=map.bmp
    mloadbmp fle$
    pic&:=Create(hPic,-1,fle$)
    Inframe1&=createplane(%Hwnd,5,5,500,500,%bmpx,%bmpy)
    ps&:=createpicstatic(inframe1&,,0,0,%bmpx,%bmpy)
    Sendmessage(ps&,$172,0,pic&)

    whilenot %key==2

        waitinput

    wend

    deleteobject pic&
    end

2.587 kB
Hochgeladen:11.08.2006
Ladeanzahl41
Herunterladen
 
11.08.2006  
 




rainerhoefs
Hallo iF,

prima Deine EXE zeigt genau was ich wünsche, und funktioniert tadellos. Danke!!

Aber jetzt habe ich den Source für 7.0 abgeändert, und da hüpft es wieder! Sowie Du den HorzScrollbar bewegst hüpft das Bild ein paar Punkte nach oben. Wenn Du den VertScrollbar bewegst hüpft das Bild ein paar Punkte nach rechts.

Ich vermute, das es was mit den Rändern der Listbox zu tun hat. Denn darin erstellst Du ja das Static. Und wenn man nun scrollt wird das Static in der Listbox bewegt, und da meine ich springt es dann.

Hier mein geänderter Source:
KompilierenMarkierenSeparieren
Declare Inframe1&
Declare PictureHandle&
Declare PictureBox&
Declare dateiname#
Declare FileName$
Declare size#
Declare BmpX%
Declare BmpY%
Def Loadimage(6) !USER32,LoadImageA

Proc Createplane

    Parameters hd&,xp&,yp&,xs&,ys&,xr&,yr&,Dummy&
    hd&=Control(LISTBOX,,$50300000,xp&,yp&,0,0,hd&,0,%Hinstance)
    Dummy& = If(xr&>xs&,ys&-25,ys&-10)
    Case yr& < ys& : yr& = Dummy&
    Sendmessage(hd&,404,xr&,0)
    Sendmessage(hd&,416,0,1)

    Whileloop yr&

        Addstring(hd&,)

    Wend

    Setwindowpos hd&=xp&,yp&-xs&,ys&;0
    Dummy& = If(xr&<xs&,xs&,xr&)
    Return Control(STATIC,,1409286400,0,0,Dummy&,yr&+10,hd&,0,%Hinstance,$0200)

Endproc

Proc GetBmpDimension

    Parameters bmpfile$
    Dim size#,8
    FileMode 0
    Assign #1,bmpfile$
    OpenRW #1
    Seek #1,18
    BlockRead(#1,size#,0,8)
    Close #1
    BmpX% = Long(size#,0)
    BmpY% = Long(size#,4)
    Dispose size#

EndProc

Windowstyle ( 512 | 8 | 16 )
Window 0,0 - 600,600
Cls @RGB(123,23,0)
Dim dateiname#,256
FileName$ = LoadFile$ (Bild laden!,*.bmp)
GetBmpDimension FileName$
String dateiname#,0 = FileName$
PictureHandle& = Loadimage(%Hinstance,dateiname#,0,0,0,$00050)
Createplane %Hwnd,10,10,500,500,BmpX%,BmpY%
Inframe1& = @&(0)
PictureBox& = Control(STATIC,,$5400010E,0,0,BmpX%,BmpY%,Inframe1&,2000,%Hinstance)
Sendmessage(PictureBox&,$172,0,PictureHandle&)

Whilenot %Key = 2

    Waitinput

Wend

Dispose Dateiname#
Deleteobject PictureHandle&
End

Sorry ich habe ihn in meinem Stil geschrieben.

Rainer
 
11.08.2006  
 



Jeder soll hier in seinem Stil schreiben dürfen ich gugs mir grad an.
 
11.08.2006  
 



Dein Source reagiert mit XProfan10 ebenso richtig wie meiner. Hm! Leider hab ich kein Profan²7 mehr herumzuliegen...

Vielleicht hilft wirklich nur das Herumspielen am ControlStil.
 
11.08.2006  
 




rainerhoefs
Hallo iF,

leider funktioniert Deine EXE auch nicht richtig. Bei dem mitgelieferten Bild fällt es nur sehr schlecht auf. Deshalb habe ich es erst nach mehrmaligem Hinsehen entdeckt. Auch dort springt das Bild. Nur denke ich die Anzahl Punkte die es versetzt, wenn man den Scrollbar verschiebt, hängt von der Bildgröße mit ab.

Dann springt es halt immer beim anfahren, wenn man dann konsequent weiter scrollt springt es nicht mehr.

Das springen kann man ganz gut sehen wenn man nicht den Slider bewegt, sondern den Arrow anklickt, in dessen Richtung es bewegt werden soll.

Lade ein Bild und nehme zuerst den Arrow nach rechts scrollen. Dann siehst Du es sehr gut. Dann den nach unten Scrollen-Arrow. Auch dort sieht man den Sprung. Beim Slider ist der Sprung m.E. kleiner.

Nun Gut so werde ich mal an der Listbox rumbasteln. Mal ohne Frame oder mal sehen was man noch ändern kann!

Da es sich um ein Scanprogramm für Dias und Negative handelt, ist so ein Sprung im Photo natürlich nicht akzeptabel.

Danke einstweilen

Rainer
 
12.08.2006  
 




Michael
Wodrich
Ich habe mir mal die 7.0 herausgekramt - denn bei mir laufen alle Beispiele.

Jetzt sehe ich es deutlich. Der Grund für diesen Bildsprung ist:
Der Rahmenstyle wird zwar gesetzt - ein kleiner Schatten links und oben - aber er wird durch das Bild schlicht übermalt.
Scrollt man dann ganz nach vorne und oben, dann ist der Rahmen auf einmal wieder da (er wird also mitgescrollt).

Hier ist also die 7.0 Schuld am Bildsprung.
Eine mögliche Lösung: Den Style so setzen, daß hier keine störenden Rahmenstyles entstehen und die Sunken- und was auch immer -Effekte einfach um dieses Control drumherum malen.

Also schlicht ausgedrückt:
- ein Rahmen-Control erstellen
- darin das Inline-Control einbetten
- darin das Bild darstellen
Alles in eine PROC und gut...

Schöne Grüße
Michael Wodrich

(das Du Dir mit einer neueren Version das Leben erleichtern kannst, weißt Du ja sicher...)
 
Programmieren, das spannendste Detektivspiel der Welt.
12.08.2006  
 




rainerhoefs
Hallo Michael,

was meinst Du mit einem Rahmen-Control?

Rainer
 
12.08.2006  
 




Michael
Wodrich
Stell es Dir wie einen Bilderrahmen vor. Das äußere Control versiehst Du mit den gewünschten Rahmen-Effekten (SS_Sunken z.B.). Darin platzierst Du das Inline-Control. Hierbei mußt Du dann darauf achten das dieses innere Control die Rahmenlinien nicht überschreibt (positionieren). Da das äußere Control nicht scrollt bleibt der Rahmen-Effekt also intakt.
Das innere Control sollte dann ganz rahmenlos sein, damit nicht auffällt das hier mehrere Controls geschachtelt sind.
Selbst Microsoft verwendet solche geschachtelten Controls...

Schöne Grüße
Michael Wodrich
 
Programmieren, das spannendste Detektivspiel der Welt.
12.08.2006  
 




rainerhoefs
Hallo Michael,

wenn ich den Source von iF richtig lese, wird zuerst eine Listbox gezeichnet, die einen Rahmen hat. Dann wird darin ein Static gezeichnet, das wahrscheinlich auch einen Rahmen hat, Und dann wird nochmal ein Stati cauf das Static gesetzt. Ich habe schon mit alle Stilen herumprobiert, der Sprung belibt. Auch wenn man die Positionierung der Statics innerhalb der Listbox ändert, springt das Bild. Es schein hier keine Lösung zu geben.

Rainer
 
12.08.2006  
 




Rolf
Koch
und wenn Du es mit einem Browser versuchst?
Hab grad mal schnell mit ROC ein Webbrowser erstellt und dort z.B. eine übergrosse BMP angezeigt. Butterweiches Scrollen halt wie hier im Forum
 
12.08.2006  
 




rainerhoefs
Hallo Rolf,

soll ich jetzt zugeben das ich zu blöd bin den Satz mit dem Browser sofort in Source umzusetzen.

Ja muß ich wohl.

Kannst du da bitte etwas konkreter werden?

Danke

Rainer
 
12.08.2006  
 




Jörg
Sellmeyer
Hier was aus meinem Archiv. Ich glaube von Uwe Pascal Niemeyer:
KompilierenMarkierenSeparieren
 $H Windows.ph
Window 0,0-930,900
Usermessages 16
Def Atlaxwininit(0) !atl.dll,AtlAxWinInit
Def Atlaxcreatecontrol(4) !atl.dll,AtlAxCreateControl
Declare Atl&,Web&,A$
Atl&=Usedll(atl.dll)
Atlaxwininit()
A$=File:///C:MeinBildmitPfad.jpg
Web&=Control(AtlAxWin,A$,$50300000,00,0,920,550,%Hwnd,0,0,$200)-HTML-Contol anlegen

While 1

    Waitinput
    Case %Umessage=16:Break

Endwhile

Destroywindow(Web&)
Freedll Atl&
 
Windows XP SP2 XProfan X4
... und hier mal was ganz anderes als Profan ...
12.08.2006  
 




Antworten


Thementitel, max. 100 Zeichen.
 

Systemprofile:

Kein Systemprofil angelegt. [anlegen]

XProfan:

 Beitrag  Schrift  Smilies  ▼ 

Bitte anmelden um einen Beitrag zu verfassen.
 

Themenoptionen

8.414 Betrachtungen

Unbenanntvor 0 min.
Peter Max Müller27.10.2017
Andre Rohland06.10.2015
Michael Borowiak30.11.2014
Manfred Barei08.06.2014

Themeninformationen



Admins  |  AGB  |  Anwendungen  |  Autoren  |  Chat  |  Datenschutz  |  Download  |  Eingangshalle  |  Hilfe  |  Händlerportal  |  Impressum  |  Mart  |  Schnittstellen  |  SDK  |  Services  |  Spiele  |  Suche  |  Support

Ein Projekt aller XProfaner, die es gibt!


Mein XProfan
Private Nachrichten
Eigenes Ablageforum
Themen-Merkliste
Eigene Beiträge
Eigene Themen
Zwischenablage
Abmelden
 Deutsch English Français Español Italia
Übersetzungen

Datenschutz


Wir verwenden Cookies nur als Session-Cookies wegen der technischen Notwendigkeit und bei uns gibt es keine Cookies von Drittanbietern.

Wenn du hier auf unsere Webseite klickst oder navigierst, stimmst du unserer Erfassung von Informationen in unseren Cookies auf XProfan.Net zu.

Weitere Informationen zu unseren Cookies und dazu, wie du die Kontrolle darüber behältst, findest du in unserer nachfolgenden Datenschutzerklärung.


einverstandenDatenschutzerklärung
Ich möchte keinen Cookie