| |
|
|
- Seite 1 - |
|
| |
|
| |
|
|
| |
|
- 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
|
|
|
| |
|
|
|
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: KompilierenMarkierenSeparierenDeclare 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 |
|
|
| |
|
|
|
| Jeder soll hier in seinem Stil schreiben dürfen ich gugs mir grad an. |
|
|
| |
|
|
|
| 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. |
|
|
| |
|
|
|
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 |
|
|
| |
|
|
|
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 |
|
|
| |
|
|
|
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 |
|
|
| |
|
|
|
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 |
|
|
| |
|
|
|
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 |
|
|
| |
|
|
|
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 ▲ |
|
|
|