[Win C++] image effect

Pagina: 1
Acties:

  • KnoppenSpook
  • Registratie: Augustus 2000
  • Laatst online: 04-09-2023
Ik wil graag een glow effect (berekenen) om een plaatje (met mask)/tekst heen.

Heeft iemand toevallig wat informatie over hoe je dat zou kunnen berekenen. Of misschien wel Win32 C/C++ source code?

Een idee wat ik al heb is: Het masker van het plaatje groter maken, geel maken, er een blur overheen gooien, en dan het echte plaatje er gecentreerd overheen tekenen. Maar hoe reken ik zo'n blur uit. Misschien met een matrix per 3x3 pixels of zo? Misschien heeft iemand een tip hierover?

[ Voor 43% gewijzigd door KnoppenSpook op 05-12-2002 12:07 . Reden: modje boos :( ]

/me weet geen leuke quote voor in zijn signature


  • whoami
  • Registratie: December 2000
  • Laatst online: 15:52
Tja.... dit lijkt wel verdacht veel op een scriptrequest. Deze zijn niet toegestaan.

Er zullen hier vast wel mensen zijn die je kunnen helpen om zoiets zelf te maken, maar dan moet je wel wat meer info geven, as in: wat heb je al, wat lukt er niet, etc.....

Lees misschien eerst eens de p&w Quickstart;

https://fgheysels.github.io/


  • johnwoo
  • Registratie: Oktober 1999
  • Laatst online: 16:03

johnwoo

3S-GTE

Uhh, dat moet toch wel te doen zijn als je een mask hebt?

Simpele aanpak voor een 1-pixel glow randje:
Ga alle pixels in de mask af:
- is de pixel zwart in de mask, doe dan niets (ga door met de volgende)
- kijk of een van de pixels om de betreffende heen zwart is in de mask. Zo ja, maak deze pixel dan geel (of whatever je glow kleurtje is) in het plaatje (niet in de mask tekenen natuurlijk :P )

Met een kleine uitbreiding kun je em ook randjes dikker dan 1 pixel laten tekenen. Je controleert dan niet alleen de direct omliggende pixels, maar de omliggende pixels in een straal van de dikte van het lijntje. De kleur van de glowpixel laat je afhangen van de afstand naar de dichtstbijzijnde mask pixel.

edit:
Ik ga ervanuit dat het mask plaatje zwart is...

[ Voor 9% gewijzigd door johnwoo op 05-12-2002 12:07 ]

4200Wp ZO + 840Wp ZW + 1680Wp NW | 14xIQ7+ + 1xDS3-L | MTVenusE | HWP1


  • DaCoTa
  • Registratie: April 2002
  • Laatst online: 12:07
Andersom is misschien logischer. Maak een tweede graytone image, beginnend op wit. Je loopt alle pixels van de mask af. Is een pixel zwart, dan teken je - additief - op de graytone image een hele lichte circel. Als je dan klaar bent, zijn al die circels bij elkaar opgeteld en heb je een glow. Je moet dan nog alle pixels van de mask weer op 0 zetten en kleur toevoegen, oftewel, je moet de grayscale omzetten naar de gewenste kleur.

  • curry684
  • Registratie: Juni 2000
  • Laatst online: 12-05 22:23

curry684

left part of the evil twins

DaCoTa: het zal waarschijnlijk sneller zijn in de praktijk om de mask meerdere keren verschoven die additie te laten uitvoeren direct op het doelplaatje. Dus voor een mini-glowtje bijvoorbeeld in pseudocode:
C++:
1
2
3
4
5
for(int l_Left = 0; l_Left != 3; l_Left++)
  for(int l_Top = 0; l_Top != 3; l_Top++)
    MyDC->RaiseLuminance(Mask, l_Left, l_Top);
MyDC->ClipMask(Mask, 1, 1);
MyDC->DrawPicture(Piccie, 1, 1);

Naja zouden we moeten benchen, tis iig wel de goede manier die je aangeeft die sowieso al een stuk sneller is dan de (eveneens correcte overigens) methode van johnwoo.

Professionele website nodig?


  • KnoppenSpook
  • Registratie: Augustus 2000
  • Laatst online: 04-09-2023
ja, idd, dat lijkt wel een goeie en snelle manier . Ik snap nu ook eindelijk de post van DaCoTa :)

Alleen nu heb je gewoon een wat lichtere rand om je plaatje, maar het liefst zou ik die rand ook nog laten faden. Misschien dat ik wel ergens een voorbeeld kan wegtoveren, die duidelijk maakt wat ik bedoel

igg al bedankt voor de goeie ideeen

/me weet geen leuke quote voor in zijn signature


  • KnoppenSpook
  • Registratie: Augustus 2000
  • Laatst online: 04-09-2023
ja, ik heb een voorbeeldje, wat ik bedoel met dat faden: Afbeeldingslocatie: http://www.iboost.com/build/software/psp/images/glowtext4.jpg

zoiets dus "realtime" uitrekenen, met wellicht nog een achtergrond plaatje erachter (alpha blending, maar dat moet wel gaan lukken)

[ Voor 35% gewijzigd door KnoppenSpook op 06-12-2002 10:25 ]

/me weet geen leuke quote voor in zijn signature


  • curry684
  • Registratie: Juni 2000
  • Laatst online: 12-05 22:23

curry684

left part of the evil twins

KnoppenSpook schreef op 06 december 2002 @ 10:20:
Alleen nu heb je gewoon een wat lichtere rand om je plaatje, maar het liefst zou ik die rand ook nog laten faden. Misschien dat ik wel ergens een voorbeeld kan wegtoveren, die duidelijk maakt wat ik bedoel
Die techniek van mij en DaCoTa doet dat correct doordat je de 'RaiseLuminance' vaker over zichzelf uitvoert in de pixels die het dichtste bij het originele plaatje zitten.

Teken het maar eens uit op ruitjespapier :)

Professionele website nodig?


  • KnoppenSpook
  • Registratie: Augustus 2000
  • Laatst online: 04-09-2023
ah, ok, zal ik doen :)

Misschien toch nog maar een keertje doorlezen :)

/me weet geen leuke quote voor in zijn signature


  • DaCoTa
  • Registratie: April 2002
  • Laatst online: 12:07
Ja, mijn post was een beetje onduidelijk :) En ik denk dat curry ook gelijk heeft qua snelheid, dat zijn een paar grote operaties ipv in een heleboel kleintjes.
Pagina: 1