Mauszeiger rot färben
Übersicht

![]() |
MoochBetreff: Mauszeiger rot färben |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hallo,
Ich habe ein Problem ![]() ![]() Ich möchte gerne den Mauszeiger (grafik) beim überlappen langsam rot färben. Ich habs mit gamma versucht, klappt aber nicht so richtig. Vielen dank im Vorraus! |
||
Pentium IV 3.0Ghz; nVidia Geforce 6800;
Microsoft Windows XP Home SP2; BlitzBasic 3D .:: Sites ::. .:: http://www.fl4sh-clan.de/ ::. |
![]() |
KabelbinderSieger des WM-Contest 2006 |
![]() Antworten mit Zitat ![]() |
---|---|---|
Also so ein Mauszeiger ist ja generell sehr klein.
Dann müsste das gehen, indem du den aus einzelnen Pixeln zusammenstezt, die dann auf Kollision geprüft werden und ggf. rot gefärbt werden. Du kannst die Pixel mit ReadPixel (oder GetColor) in einen Array oder Type laden. |
||
<Wing Avenger Download> ◊◊◊ <Macrophage Download> |
![]() |
Sebastian |
![]() Antworten mit Zitat ![]() |
---|---|---|
@ Kabelbinder :
Zu langsam ..... *kopfschüttel* |
||
Seit 2 Jahren kein BlitzBasic und kein Windows mehr, und stolz darauf ! |
![]() |
KabelbinderSieger des WM-Contest 2006 |
![]() Antworten mit Zitat ![]() |
---|---|---|
Nun, vielleicht. Für kleine mauszeiger müsste das eigentlich schon gehen. Ich meine man nimmt da ja nicht das ganze rechteckige Bild, sondern nur die beschrifteten Pixel, die Maskierung wird ja nicht mit gespeichert. Bei so einem einfachen Pfeil sind das ja nicht so viele Pixel. Wenn das echt zu langsam ist, könnte man vielleicht rects 2*2 nehmen, dann sieht aber wahrscheinlich sch*** aus. | ||
<Wing Avenger Download> ◊◊◊ <Macrophage Download> |
![]() |
Hubsi |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ich kann auch nicht glauben das es zu langsam ist. Wie groß kann ein Mauszeiger schon sein? 6*8 Pixel vielleicht? ![]() |
||
Den ganzen Doag im Bett umanandflagga und iaz daherkema und meine Hendl`n fressn... |
![]() |
Lord_Vader |
![]() Antworten mit Zitat ![]() |
---|---|---|
Da ich das selbst vielleicht bald brauch werde ich mal so ne routine schreiben!
Edit: und hier apsten natürlich ![]() |
||
![]() |
Sebastian |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ich bin von nem Cursor wie bei Windoof ausgegangen.
Keiner kann mir weiß machen das der bloß 6*8 pixel oder so hat ..... |
||
Seit 2 Jahren kein BlitzBasic und kein Windows mehr, und stolz darauf ! |
![]() |
Lord_Vader |
![]() Antworten mit Zitat ![]() |
---|---|---|
32x32 meine ich egal ^^
Also da ich DOCH zu faul bin und grad was anderees zu tun habe sage ich dir ungefär wies geht^^ Das sind die umrechnungsmethode für read- und writepixelfast (von blitzbase.de): Code: [AUSKLAPPEN] ;Readpixel in RGB umwandeln: a=(rgb AND $FF000000)/$1000000 r=(rgb AND $FF0000)/$10000 g=(rgb AND $FF00)/$100 b=rgb AND $FF ;Hexdezimal für Writepixel: rgb=a*$1000000 + r*$10000 + g*$100 + b a steht für alpha geht aber nur in 3D also am besten immer 0! Dann nimmst du immer die gelesene farbe und addierst dazu die EINFÄRBFARBE 255,0,0 zB und teilst durch 2! rneu=r+255/2 Und das machste ambesten mit timer also millisecs() damits net prozabhängig is! Wie erklär ich jez nit hier. Die anderen farben wegzunemen, weis net wie man das machen soll am besten die differenz zwischen r unr rneu also Code: [AUSKLAPPEN] gneu=g-(255-r) ;das natürlich bevor du die rote farbe rechnest! if gneu<0 then gneu=0 Probiers mal habs net probiert ![]() |
||
![]() |
KabelbinderSieger des WM-Contest 2006 |
![]() Antworten mit Zitat ![]() |
---|---|---|
Och, mit mir könnt ihr immer rechnen ![]() Code: [AUSKLAPPEN] Graphics 640,480,16,1
SeedRnd MilliSecs() zeiger = CreateImage(15,15) SetBuffer ImageBuffer(zeiger) Color 0,250,0 Line 2,0,15,13 Color 0,250,0 Line 1,0,15,14 Color 0,200,0 Line 0,0,15,15 Color 0,150,0 Line 0,1,14,15 Color 0,150,0 Line 0,2,13,15 Color 0,0,255 Oval 0,0,5,5 HandleImage zeiger,0,0 MaskImage zeiger,0,0,0 bild = CreateImage(100,100) SetBuffer ImageBuffer(bild) Cls Color 255,255,255 Oval 0,0,100,100 Dim punkt(300,6) SetBuffer BackBuffer() DrawImage zeiger,0,0 For i = 0 To 15 For j = 0 To 15 wert = ReadPixel(i,j) rot = (wert And $FF0000)/$10000 gruen = (wert And $FF00)/$100 blau = (wert And $FF) If rot + gruen + blau <> 0 Then punkt(num,3)=1 punkt(num,1)=i punkt(num,2)=j punkt(num,4)=rot punkt(num,5)=gruen punkt(num,6)=blau num = num + 1 EndIf Next Next Repeat mx = MouseX() my = MouseY() DrawImage bild,100,100 For i = 0 To 300 If punkt(i,3)=1 Then If ImageRectCollide(bild,100,100,0,punkt(i,1)+mx,punkt(i,2)+my,1,1) Then Color 255,0,0 Else Color punkt(i,4),punkt(i,5),punkt(i,6) EndIf Plot punkt(i,1)+mx,punkt(i,2)+my EndIf Next Flip Cls Until KeyHit(1) End |
||
<Wing Avenger Download> ◊◊◊ <Macrophage Download> |
![]() |
MoochBetreff: Danke |
![]() Antworten mit Zitat ![]() |
---|---|---|
Vielen Dank für die vielen Antworten!
Ich werds mal ausprobieren! |
||
Pentium IV 3.0Ghz; nVidia Geforce 6800;
Microsoft Windows XP Home SP2; BlitzBasic 3D .:: Sites ::. .:: http://www.fl4sh-clan.de/ ::. |
![]() |
Jan_Ehemaliger Admin |
![]() Antworten mit Zitat ![]() |
---|---|---|
hm, ich würde mir nicht die beine rausreisen, sondern einfach 2 Grafiken malen, da kann man mehr ändern, als nur rot und dann mit if then else einfach den passenden Mauszeiger zeichnen! | ||
between angels and insects |
![]() |
MoochBetreff: ... |
![]() Antworten mit Zitat ![]() |
---|---|---|
Wie meinst du das?
Soll ich so viele Bilder zeichnen oder meinst du überblenden (Müsste mir mal jemand erklären, aber ich such mal)? |
||
Pentium IV 3.0Ghz; nVidia Geforce 6800;
Microsoft Windows XP Home SP2; BlitzBasic 3D .:: Sites ::. .:: http://www.fl4sh-clan.de/ ::. |
Gerhard |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Er meint, dass du zwei Mauszeiger verwenden könntest, einen weissen und einen roten.
Grundsätzlich zeichnest du den weissen Mauszeiger und bei Überlappung zeichnest du anstelle des weissen den roten Mauszeiger. Dann hast du zwar keine langsame Farbüberblendung - aber wer benötigt schon was Langsames... |
||
![]() |
MoochBetreff: ... |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ach so...
Das benutze ich grade auch. Aber das will ich auf die dauer ersetzen |
||
Pentium IV 3.0Ghz; nVidia Geforce 6800;
Microsoft Windows XP Home SP2; BlitzBasic 3D .:: Sites ::. .:: http://www.fl4sh-clan.de/ ::. |
![]() |
KabelbinderSieger des WM-Contest 2006 |
![]() Antworten mit Zitat ![]() |
---|---|---|
Achso, ich dachte mit "langsam rot färben" meintest du, dass die Pixel des Zeiger rot gefärbt werden, die das Bild berühren. (s.o.) | ||
<Wing Avenger Download> ◊◊◊ <Macrophage Download> |
![]() |
MoochBetreff: ... |
![]() Antworten mit Zitat ![]() |
---|---|---|
Nein, ich meinte folgendes: Der Mauszeiger soll von blau oder weiß erst nur ein bisschen röter, dann immer mehr rot, bis er nur noch rot ist. | ||
Pentium IV 3.0Ghz; nVidia Geforce 6800;
Microsoft Windows XP Home SP2; BlitzBasic 3D .:: Sites ::. .:: http://www.fl4sh-clan.de/ ::. |
![]() |
Firstdeathmaker |
![]() Antworten mit Zitat ![]() |
---|---|---|
Also, ich habe auch eine Möglichkeit (etwas komplizierter)
Man erstellt ein 2 Sprites, auf das eine zeichnet man den Ausgansmauszeiger ein, auf den anderen den roten. Dann kann man mit entityalpha den Übergang faden. Man könnte sich auch so seinen Mauszeiger einfach einmal ausrechnen lassen und speichern (damit man nachher im Programm nicht immer so verfahren muss). Ich hab das bei meinem Intro verwendet, gibt nen geilen Übergang: Code: [AUSKLAPPEN] Local tmp_sprite=CreateSprite()
Local tmp_sprite2=CreateSprite() MoveEntity tmp_sprite,0,0,10 MoveEntity tmp_sprite2,0,0,10 ScaleSprite tmp_sprite,10,8 ScaleSprite tmp_sprite2,10,8 Local tmp_texture=CreateTexture(SCREEN_X,SCREEN_Y) Local tmp_texture2=CreateTexture(SCREEN_X,SCREEN_Y) SetBuffer TextureBuffer(tmp_texture) Local tmp_img=LoadImage("images\iglogo1.png") MidHandle tmp_img DrawImage tmp_img,SCREEN_X/2,SCREEN_Y/5*3 EntityTexture tmp_sprite,tmp_texture SetBuffer TextureBuffer(tmp_texture2) tmp_img=LoadImage("images\iglogo2.png") MidHandle tmp_img DrawImage tmp_img,SCREEN_X/2,SCREEN_Y/5*3 EntityTexture tmp_sprite2,tmp_texture2 SetBuffer BackBuffer() EntityAlpha tmp_sprite2,0 For i=0 To 100 Cls EntityAlpha tmp_sprite,i/100.0 RenderWorld Flip Delay 10 Next For i=0 To 100 Step 2 Cls EntityAlpha tmp_sprite,(100-i)/100.0 EntityAlpha tmp_sprite2,i/100.0 RenderWorld Flip Delay 10 Next For i=0 To 100 Cls EntityAlpha tmp_sprite,(100-i)/100.0 RenderWorld Flip Delay 10 Next |
||
www.illusion-games.de
Space War 3 | Space Race | Galaxy on Fire | Razoon Gewinner des BCC #57 User posted image |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group