| |
Fortgeschrittene ProgrammierungRe: Matrix | | | Autor: Zardoz | Datum: 25.02.03 21:47 |
| Hallo Gigaherz,
probier' mal diesen Code:
'Benötigt wird: eine PictureBox, bei der die Index-Eigenschaft auf 0 gesetzt
' ist.
Option Explicit
Private Declare Function BitBlt& Lib "gdi32" (ByVal hdcDest&, _
ByVal XDest&, ByVal YDest&, ByVal nWidth&, ByVal nHeight&, _
ByVal hDCSrc&, ByVal xSrc&, ByVal ySrc&, ByVal dwRop&)
Private Sub Form_Activate()
Dim i%, SW%, SH%, W%, Sc%, ZB%, ZH%, Sour As Object, Dest As Object
Randomize
Me.ScaleMode = 3
SW = Me.ScaleWidth
SH = Me.ScaleHeight
Me.Caption = "Matrix"
Load Picture1(1)
For i = 0 To 1
With Picture1(i)
.Visible = False
.ScaleMode = 3
.BorderStyle = 0
.BackColor = 0
ZB = .TextWidth("W")
ZH = .TextHeight("W")
.Move 0, 0, SW, SH + ZH
.AutoRedraw = True
.Cls
End With
Next i
Sc = SW \ ZB
ReDim Speed%(Sc), Z1%(Sc), Z2%(Sc), Fa&(Sc)
Do
W = 1 - W
Set Sour = Picture1(W)
Set Dest = Picture1(1 - W)
With Dest
Call BitBlt(.hDC, 0, 0, SW, SH + ZH, Sour.hDC, 0, 0, vbSrcCopy)
For i = 0 To Sc - 1
Z1(i) = Z1(i) + 1
If Z1(i) > Speed(i) Then
Z1(i) = 0
Call BitBlt(.hDC, i * ZB, 1, ZB, SH + ZH - 1, Sour.hDC, i * ZB, 0, _
vbSrcCopy)
Z2(i) = Z2(i) + 1
If Z2(i) = ZH Then
Z2(i) = 0
'Dest.Line (i * ZB, 0)-Step(ZB - 1, ZH - 1), 0, BF 'Löschen
.CurrentX = i * ZB
.CurrentY = 0
.ForeColor = Fa(i)
Dest.Print Chr(33 + 90 * Rnd)
If Rnd < 0.2 Then
Speed(Rnd * Sc) = Int(Rnd * 10)
End If
If Rnd < 0.05 Then
Fa(Rnd * Sc) = IIf(Rnd < 0.5, vbCyan, RGB(0, 32 + Rnd * 223, 32 + _
Rnd * 223))
End If
End If
End If
Next i
Call BitBlt(Me.hDC, 0, 0, SW, SH, .hDC, 0, ZH, vbSrcCopy)
End With
DoEvents
Loop
End Sub
Private Sub Form_Unload(Cancel As Integer)
End
End Sub Gruß
Zardoz | |
Re: Matrix??? | | | Autor: Zardoz | Datum: 26.02.03 10:20 |
| Ergänzung:
Diese Zeile:
If Z1(i) > Speed(i) Then gegen diese:
If Z1(i) >= Speed(i) Then ersetzen | |
Re: Matrix??? | | | Autor: Scream | Datum: 13.05.03 17:19 |
| Ich weiß, dieser Thread ist schon alt. Aber ich will noch etwas verbessern. Wie kann ich die Zahlen dicker darstellen? | |
Re: Matrix??? | | | Autor: Master | Datum: 14.05.03 09:27 |
| nach Randomize im Activate-Event Me.Font.Bold=True reinschreiben | |
Re: Matrix??? | | | Autor: Scream | Datum: 14.05.03 14:28 |
| Habs zwar gemacht, geht aber irgendwie nicht. Die Schrift bleibt gleich. | |
Re: Matrix??? | | | Autor: Scream | Datum: 14.05.03 14:37 |
| Und noch 2 Fragen:
1. Wenn ich das Programm starte ist die CPU-Auslastung zwischen 30 und 60 Prozent !!!
Ich habe einen Thunderbird 1400 @ 1600 MHz. Das kann doch nicht sein. Wie kann ich die CPU-Auslastung auf utner 10 Prozent sinken?
2. Wie bekomme ich es hin, dass nur 0en und 1en verwendet werden?Gigaherz schrieb: | |
Re: Matrix??? | | | Autor: Zardoz | Datum: 14.05.03 22:56 |
| Hallo Scream,
das Programm passt sich dynamisch dem verwendeten Zeichensatz an.
Um die Einstellungen zu ändern, mußt Du in den Eigenschaften der
Picturebox unter Font die gewünschten Änderungen vornehmen. Um
einen Nachzieheffekt zu vermeiden muß bei einigen Schriften die
auskommentierte Zeile "Löschen" wieder aktiviert werden.
Gruß
Zardoz | |
Re: Matrix??? | | | Autor: MeisterPhantom | Datum: 15.05.03 10:53 |
| ersetze die zeile
Dest.Print Chr(33 + 90 * Rnd)
mit
Dest.Print Chr(48 + 1 * Rnd)
dann gibt er nur noch 0 und 1 aus.
wie kann ich die schrift auf Grün ändern? | |
Re: Matrix??? | | | Autor: MeisterPhantom | Datum: 15.05.03 10:58 |
| habe es auch mit der farbe hinbekommen trotzdem danke:
man ersetzt einfach
.ForeColor = Fa(i)
mit
.ForeColor = &HFF00&
und schon ist die schrift farbe grün | |
Re: Matrix | | | Autor: MeisterPhantom | Datum: 16.05.03 10:35 |
| Wie kann ich bestimmen das das nur auf einen teil einer form angewendet wird?
btw das ich die größe und position bestimmen kann.
und warum lastet diese Anwendung 100% das system aus? | |
Re: Matrix | | | Autor: Meister Phantom | Datum: 20.05.03 07:34 |
| Und wie kann ich das optimieren das das nicht mehr das system auf 100% | |
Re: Matrix??? | | | Autor: Sascha | Datum: 22.05.03 12:14 |
| hi martoeng ... also das hört sich gut an das er sowas abspielen kann also im hintergrunsd .. weist du wie das funktionieren könnte? ... denke mal das der aktive desktop eingeschaltet sein muss oder? ...
MfG Sascha
Video Disk Rekorder marke eigenbau
http://www.vdrportal.de | |
Kanas? | | | Autor: BhaaL | Datum: 24.05.03 12:19 |
| Im echten Matrix-Effekt laufen (verdrehte) Kanas (jap. Zeichen) durchs Bild.
Ich wollte die bei mir einbauen, ging aber nicht.
Die Schrift is MS Mincho(oder MS Gothic, je nachdem...), die Katakana gehen von 12449 bis 12452(ASCII-Wert).
Nur die Funktion Chr() kommt mit diesen Zahlen nicht zurecht.
Wie kann ich die trotzdem durchlaufen lassen?!
Wenn Windows XP die Antwort ist, wie dumm war dann die Frage? | |
Re: Matrix | | | Autor: Daniel A. | Datum: 24.05.03 12:47 |
| hi martoeng,
also ich hab zum arbeiten gern mal nen film im hintergrund laufen. yo, das fenster mach ich halt ganz klein und irgendwo in die ecke.
ich guck dann nicht wirklich den film, es ist nur so, daß irgendwas im hintergrund laufen muß....wie musik.
ich glaube wenn es ein porno wäre, würde ich die besten stellen immer verpassen.......das war jetzt nur ein beispiel
du meintest ja, daß ich mit winDVD den film sozusagen als desktophintergrundbild laufen lassen kann?
das würde mich mal interessieren wie das geht, denn dann bräuchte ich das bild nicht klein machen usw.....
witzig ist, daß es eine einstellung gibt den film in einer höheren geschwindigkeit laufen zu lassen. was man nicht so alles ausprobiert . na ja und wenn man dann einen film mit eddy murphy anguckt, der ja eh immer so schnell spricht, hat man gleich einen neuen film, nur ist er diesmal lustig.
gruß
daniel A. | |
Re: Kanas? | | | Autor: dbayer | Datum: 24.05.03 14:23 |
| Zeichen aus dem UniCode-Bereich müssen , da ja 2 Byte weit, mit ChrW() geschrieben werden.
Das ganze wird auch nur auf OS mit Unicode-unterstützung (NT4/2000/XP) laufen.
Besser wird es sein, diese japanischen Ideogramme (Katagana, Hiragama, Kanji) als Bild zu laden.
dbayerTo be is to do (Rene Descartes)To do is to be (Kant / Nietzsche / Sartre u.a.)Do be do be dooo (Frank Sinatra, Strangers in the Night) | |
Re: Matrix | | | Autor: Martoeng (Moderator) | Datum: 24.05.03 20:31 |
| Einen Film schnell anzugucken ginge theoretisch auch im mediaplayer. Warum die das nicht integriert haben...
WinDVD 4 hat dieses schnell und langsam ja. allerdings schmiert das auch konsequent bei mir ab, wenn ich das bild auf den fernseher lege. wenn ich nur windvd anhabe ist das kein problem. aber wehe ich minimiere das einmal und spiele einmal solitär zwischendurch. ruckel,quietsch. rechnerneustart.
Dieses Desktop-Feature ist ziemlich cool (evtl. erst ab Version 4 oder höher). Ist zwar nicht absolut perfekt, aber mal was anderes (ein paar Pixel sind nicht so transparent wie sie sein sollten). Mein Problem dabei ist, dass wenn ich bspw. programmiere den ganzen Bildschirm brauche. da höre ich dann immer musik mit meinem selbstgebauten Martoeng-Player. Der hat das Schneller/Langsamer-Feature, tut genau das was ich will, lädt nicht stundenlang, und ist mit den zusatzfunktionen ausgestattet, die ich haben will (wiedergabeliste komprimieren,ftp-support,etc.). das ist das schöne, wenn man Programmierer ist. Alles was irgendwo fehlt, lässt sich leicht selbst bauen.
Mir fällt zwar gerade auf, dass das langsam vom Thema abweicht, aber interessant ist es trotzdem mal. arbeite derzeit selbst auch an diesem Desktop-Video-Feature.
Aber schließen wir doch mal wieder den Kreis und träumen davon, dass wir "Matrix" irgendwann auf dem Desktop sehen.
vbarchiv.dll (Freeware), Tutorials uvm. auf http://www.martoeng.com. | |
Re: Matrix | | | Autor: Mr. Fox | Datum: 25.05.03 19:44 |
| Hi!
Mal nur so ein Schnellschuß:
Schon mal versucht den Code in ein OCX zu packen und dann das Steuerelement in einer HTML-Seite anzuzeigen. Ein kleines Script dazu, dass das Steuerelement immer die maximale Größe auf der HTML-Seite hat, und dann nur noch die HTML-Seite via Active Desktop einbinden.
Ansonsten bleibt nur die Möglichkeit, den DeviceContext des ListViews zu ermitteln, und immer im Hintergrund das aktuellste Bild hinein zu schreiben (via BitBlt-Funktion).
Hoffe das hilft euch weiter.
ciao | |
Re: Matrix | | | Autor: Daniel A. | Datum: 26.05.03 10:24 |
| yo, moin moin,
ja etwas abgewichen von thema. mittlerweile hab ich die desktopeinstellung auch gefunden, ist nicht wirklich versteckt. ich hatte lediglich keine ahnung, daß das möglich ist und daher wohl noch nie probiert. ich kann deine kritik daran noch nicht teilen, da ich es ja erst ausprobierte.
diesen scrennsaver hab ich schon mal gesehen, beim linux ist er wohl standardmäßig dabei, oder nicht?
ich glaube ich könnte hier kein tip geben, zumindest keinen der wirklich nützen würde und nicht zu lasten der performance geht.
was mich allerdings jetzt noch mal interessiert, ich würde es bei gelegenheit mal versuchen wollen, wie ich mir meinen eigenen player zusammenbastel.
ich hab es mal kurz versucht, jedoch nachdem ich ein verweis auf die mediaplayer oder wie die .ocx heißt gemacht hab, ist mir mein rechner abge..... na ja, und seit dem hab ich nichts mehr in die richtung versucht.
vielleicht kannste mal stichwörter nennen wo man gucken und lesen sollte?!
gruß
daniel A. | |
Re: Kanas? | | | Autor: BhaaL | Datum: 26.05.03 17:49 |
| Hmm....
1.) Solls je eh nur auf XP laufen(was trotzdem nicht geht, ich seh nur ? statt Kanas)
und
2.) Wie soll ich die denn als Bild einfügen? Na gut, das mit dem Bild laden ist kein Problem, aber der Rest...
Die Zeile mit "Dest.Print...":
Wenn ich dort LoadPicture(pfad) angebe, passiert nix...
Und mit Paint, PaintPicture usw will ich gar nich erst anfangen...
Wenn Windows XP die Antwort ist, wie dumm war dann die Frage? | |
Re: Matrix | | | Autor: Zardoz | Datum: 27.05.03 05:05 |
| Hallo Meister Phantom,
das geht, indem man das Programm über einen Timer laufen läßt. Die
Grafik ist dann allerding nicht mehr so fließend:
'Benötig wird: 1 Picturebox, 1 Timer-Control
Option Explicit
Private Declare Function TextOut& Lib "gdi32" Alias "TextOutA" _
(ByVal hdc As Long, ByVal X&, ByVal y&, ByVal lpString$, ByVal nCount&)
Private S() As Byte, F&(), Z1%(), Z2%(), PSW%, PSH%
Private KLM%, ZLN%, ZB%, ZH%
Private Sub Form_Activate()
Dim ProH%, ProV%, Tt$
ProH = 70 'Grafikbreite in Prozent
ProV = 60 'Grafikhöhe in Prozent
Tt = "M A T R I X R E L O A D E D"
Randomize
Me.WindowState = vbMaximized
Me.BackColor = vbBlack
Me.ScaleMode = vbTwips
Me.FontBold = True
Me.Caption = Space((Me.Width - Me.TextWidth(Tt)) \ Me.TextWidth(" ")) & Tt
Me.FontBold = False
Me.ScaleMode = vbPixels
With Picture1
.BorderStyle = 0
.ScaleMode = vbPixels
.AutoRedraw = True
.BackColor = vbBlack
ZB = .TextWidth("W")
ZH = .TextHeight("W")
PSW = ZB * Int(Me.ScaleWidth * ProH / 100 / ZB)
PSH = ZH * Int(Me.ScaleHeight * ProV / 100 / ZH)
.Move (Me.ScaleWidth - PSW) \ 2, (Me.ScaleHeight - PSH) \ 2, PSW, PSH
End With
KLM = PSW \ ZB - 1
ZLN = PSH \ ZH - 1
ReDim Z1(KLM), Z2(KLM), S(ZLN + 1, KLM), F(ZLN + 1, KLM)
Timer1.Interval = 20
Timer1.Enabled = True
End Sub
Private Sub Form_Unload(Cancel As Integer)
End
End Sub
Private Sub Timer1_Timer()
Dim i%, j%
With Picture1
For i = 0 To KLM
Z2(i) = Z2(i) - 1
If Z2(i) < 0 Then
Z2(i) = Z1(i)
Picture1.Line (i * ZB, 0)-Step(ZB - 1, PSH - 1), vbBlack, BF
S(ZLN + 1, i) = Int(32 + Rnd * 223)
F(ZLN + 1, i) = IIf(Rnd < 0.9, RGB(0, 32 + Rnd * 223, 0), vbWhite)
If Rnd > 0.9 Then Z1(Rnd * KLM) = Int(Rnd * 5)
For j = 0 To ZLN
S(j, i) = S(j + 1, i)
F(j, i) = F(j + 1, i)
.ForeColor = F(j, i)
Call TextOut(.hdc, i * ZB, (ZLN - j) * ZH, Chr(S(j, i)), 1)
Next j
End If
Next i
End With
End Sub Es stimmt übrigens nicht, daß das erste Programm 100% der Prozessorzeit
holt. Es wird immer 100% der Zeit genutzt, die andere Programme übrig
lassen. Wenn ein anderes Programm 60% Prozessorzeit benötigt, holt das
Matrix-Programm die restlichen 40%.
Gruß
Zardoz | |
| Sie sind nicht angemeldet! Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.
Einloggen | Neu registrieren |
|
|
sevGraph (VB/VBA)
Grafische Auswertungen
Präsentieren Sie Ihre Daten mit wenig Aufwand in grafischer Form. sevGraph unterstützt hierbei Balken-, Linien- und Stapel-Diagramme (Stacked Bars), sowie 2D- und 3D-Tortendiagramme und arbeitet vollständig datenbankunabhängig! Weitere InfosTipp des Monats Access-Tools Vol.1
Über 400 MByte Inhalt
Mehr als 250 Access-Beispiele, 25 Add-Ins und ActiveX-Komponenten, 16 VB-Projekt inkl. Source, mehr als 320 Tipps & Tricks für Access und VB
Nur 24,95 EURWeitere Infos
|