vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
NEU! sevCoolbar 3.0 - Professionelle Toolbars im modernen Design!  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2024
 
zurück

 Sie sind aktuell nicht angemeldet.Funktionen: Einloggen  |  Neu registrieren  |  Suchen

Fortgeschrittene Programmierung
Matrix??? 
Autor: Gigaherz
Datum: 23.02.03 22:35

Hallo
ich wollte den screensaver von Matrix nachschreiben, habe aber ,mir alle möglichen und logischen, Ideen ausprobiert, nur keine hat funktioniert! Hat jemand vieleich mal den sc für mich, oder kann mir irgenwie weiterhelfen?
Danke im vorraus

MfG
Gigaherz

Ich hasse es, wenn etwas nicht Funktioniert!!!!

Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: 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
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

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
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

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?
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Matrix??? 
Autor: Master
Datum: 14.05.03 09:27

nach Randomize im Activate-Event Me.Font.Bold=True reinschreiben
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Matrix??? 
Autor: Scream
Datum: 14.05.03 14:28

Habs zwar gemacht, geht aber irgendwie nicht. Die Schrift bleibt gleich.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

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:
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

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
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

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?
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

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
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

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?
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Matrix 
Autor: ModeratorMartoeng (Moderator)
Datum: 16.05.03 12:42

Das Ding lastet 100% das System aus, weil es hier mit einer For-Schleife gemacht wurde. Ist nicht wirklich gut.

wenn mit BitBlt gearbeitet wird, dann kannst Du über x und y bestimmen wohin es soll.


vbarchiv.dll (Freeware), Tutorials uvm. auf http://www.martoeng.com.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

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%
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Matrix 
Autor: Gigaherz
Datum: 21.05.03 22:56

Hi
kann mir jem,and sagen, ob ich den Matrix Screensaver als desktop hintergrund setzten kann? Hab mal gehört, das der destop eigentlich nur eine Listbox ist!
Ich weiß das mein pc dann schon mit dem desk hintergrund voll ausgelastet ist, aber ich möchte das gerne mal ausprobieren!
MfG
Gigaherz
Danke im vorraus!

Ich hasse es, wenn etwas nicht Funktioniert!!!!

Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Matrix 
Autor: ModeratorMartoeng (Moderator)
Datum: 21.05.03 23:59

Der Desktop ist keine Listbox, dafür aber ein abgewandeltes ListView. Den Screensaver als Hintergrund? Geht nicht.
Das einzige in dieser Richtung, was ich kenne, ist WinDVD, was DVDs auf dem Desktop abspielen kann (also hinter den Desktop-Icons).


vbarchiv.dll (Freeware), Tutorials uvm. auf http://www.martoeng.com.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

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

Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

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?

Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

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.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

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)

Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Matrix 
Autor: ModeratorMartoeng (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.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

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
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

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.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Eigener Player 
Autor: ModeratorMartoeng (Moderator)
Datum: 26.05.03 11:56

Im Prinzip besteht der Player nur aus einer Picturebox und einer Toolbar. Du steuerst alles über das MCI. So wie im Workshop des CD-Players. Musst Dich einfach mal durch die MSDN quälen zu diesem Thema. mciSendString heißt die API-Funktion. Um einen guten Player zu bauen würde ich Dir empfehlen Deine Form zu subclassen, damit Du auch Callbacks vom MCI empfangen kannst.


vbarchiv.dll (Freeware), Tutorials uvm. auf http://www.martoeng.com.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

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?

Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

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
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

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

Funktionen:  Zum Thema  |  GesamtübersichtSuchen 

nach obenzurück
 
   

Copyright ©2000-2024 vb@rchiv Dieter Otter
Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel