Weich zeichnen
Übersicht

![]() |
ToeBBetreff: Weich zeichnen |
![]() Antworten mit Zitat ![]() |
---|---|---|
Wie kann ich selber sowas machen, dass wenn ich ein Bild habe (Schwarz-weiß) und möchte es verwishcen, also so dass sich z.b. ein Kreis in der Mitte des Bildes mit der Farbe 255,255,255 auf dem Untergrung 0,0,0 dann in der mitte 255,255,255 hat und dann immere Dunkler wird , also als ob es langsam Trasparent wird nach außen hin ?
mfg ToeB |
||
Religiöse Kriege sind Streitigkeiten erwachsener Männer darum, wer den besten imaginären Freund hat.
Race-Project - Das Rennspiel der etwas anderen Art SimpleUDP3.0 - Neuste Version der Netzwerk-Bibliothek Vielen Dank an dieser Stelle nochmal an Pummelie, welcher mir einen Teil seines VServers für das Betreiben meines Masterservers zur verfügung stellt! |
![]() |
DerHase |
![]() Antworten mit Zitat ![]() |
---|---|---|
Du nimmst nen Pixel und mischt aus den benachberten Pixeln die Farbwerte in bestimmten Anteilen mit rein, kuck dir mal die RGB Befehele an. Die Pixel sollte man aus den Originalbild auslesen und nicht aus dem bereits veränderten, also schön Buffer und so, sonst hat man lustige Effekte, machnmal sind die auch wünschenswert ![]() |
||
Play Satyr! |
E. Urbachehemals "Basicprogger" |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Nicht die schnellste Variante, aber die einfachste:
Code: [AUSKLAPPEN] Const precisionInv = 1
Function Oval2(x, y, width, height, r# = 1.0, g# = 1.0, b# = 1.0) Local radius = (width / 2) Local rgbFactor# = 255.0 / radius For I = 0 To radius Step precisionInv Color I * r * rgbFactor, I * g * rgbFactor, I * b * rgbFactor Oval x + I, y + I, width - I * 2, height - I * 2 Next End Function Ist nicht Realtime-fähig, aber wenn du precisionInv etwas höher stellst läuft die Funktion schneller. Beispiel: Code: [AUSKLAPPEN] Graphics 640, 480, 32, 2
SetBuffer BackBuffer() Repeat Cls Oval2 GraphicsWidth() / 2 - 250, GraphicsHeight() / 2 - 250, 500, 500, 1.0, 0.0, 0.0 Flip Until KeyDown(1) End Const precisionInv = 1 Function Oval2(x, y, width, height, r# = 1.0, g# = 1.0, b# = 1.0) Local radius = (width / 2) Local rgbFactor# = 255.0 / radius For I = 0 To radius Step precisionInv Color I * r * rgbFactor, I * g * rgbFactor, I * b * rgbFactor Oval x + I, y + I, width - I * 2, height - I * 2 Next End Function Edit: Wenn du keinen einheitlichen Hintergrund hast, musst du die Variante von DerHase nehmen. |
||
The box said, "Requires Windows XP or better", so I installed Ubuntu | Linux is NOT Windows
Flua :: Profiler für BB und BMax :: Partikel-Engine für BMax :: Lyphia-Projekt Quellcode (BMax) :: Automatische Parallelisierung :: Meine Musik |
- Zuletzt bearbeitet von E. Urbach am Sa, Mai 31, 2008 10:55, insgesamt 2-mal bearbeitet
![]() |
ToeB |
![]() Antworten mit Zitat ![]() |
---|---|---|
Okay danke euch beiden !
@DerHase : Ich habs mal so versucht : [EDIT] Okay habs gelöst... Aber wie kann ich einstellen, mit welcher stärke das weich zeichnen soll ? Code: [AUSKLAPPEN] Function Weich(img_,x,y,width,height)
Local pix[5] Local Buffer = ImageBuffer(img_) Local F[2] LockBuffer Buffer For xx = 1 To width-1 For yy = 1 To height-1 xpos = x + xx ypos = y + yy pix[0] = 0 pix[1] = ReadPixelFast(xpos,ypos,Buffer) pix[2] = ReadPixelFast(xpos+1,ypos,Buffer) pix[3] = ReadPixelFast(xpos-1,ypos,Buffer) pix[4] = ReadPixelFast(xpos,ypos+1,Buffer) pix[5] = ReadPixelFast(xpos,ypos-1,Buffer) F[0]=0:F[1]=0:F[2]=0 For i = 1 To 5 cr =(pix[i] And $FF0000)/$10000 cg =(pix[i] And $FF00)/$100 cb =(pix[i] And $FF) F[0] = F[0] + cr F[1] = F[1] + cg F[2] = F[2] + cb Next F[0] = F[0] / 5 F[1] = F[1] / 5 F[2] = F[2] / 5 pix[0] = 1*$1000000+F[0]*$10000+F[1]*$100+F[2] WritePixelFast(xpos,ypos,pix[0],Buffer) Next Next UnlockBuffer Buffer End Function ?? [/EDIT] thx ToeB |
||
buja |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Du könntest auch von http://east-power-soft.de die ImageFunctions.bb Library benutzen.
Da ist Weichzeichnen dabei. Den grad kann man auch einstellen glaube ich. mfg |
||
... |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group