Håller på med en liten klient och är inne i slutfasen; dvs gör massa onödiga saker som användaren tycker är snyggt. =) Jag vet inte hur det ser ut med skalningsfunktionalitet i Java, men standardlösningen nu för tiden är helt enkelt: I dagens SOA inspirerade värld så tycker jag du ska ha en C# Webbservice som rendrerar ditt streck till en bild som du sparar på en publik mapp på webbservern. Problemet med alla "in-place"-algoritmer är: Förstår inte alls varför du inte kan utnyttja standard Java2D API för detta? Tyvärr så finns inte Java2D APIet i j2me.....Men jag testade att porta Xailin (stavning...). Men det blev väldigt slött. Får bli att köra utan någon antialias vad det verkar. Tack för alla svar. Nja, inte Swing men AWT i alla fall. Får dock be om ursäkt då jag missa totalt att du satt med j2me, måste ha varit distraherad på jobbet 8).Antialias i J2ME
Har i tidigare projekt använt TinyLine för att skapa antialias på linjer och cirklar. Problemet är att TinyLine är lite väl potent för mina behov samt att det då drar lite vl mycket minne.
Så, det enda som jag egentligen vill göra är att rita linjer på en vit bakgrund (jag vet iaf vad det är för färg på bakgrunden). Har experimenterat med att göra 3 parallella linjer men det är inte så som "riktigt" antialias fungerar; och det blir inte snyggt. Är det någon som gjort en egen antialias funktion eller som kan referera till antialiasfunktioner i c# eller dyligt?
Hälsningar
RickardSv: Antialias i J2ME
1. Du vill rita ett streck från punkt p0 till p1 på en bild med (m x n) pixlar.
2. Det första man ska ha klart för sig är att en "linje" egentligen är ett rätt weird begrepp. Vad du egentligen vill rita är en avlång rektangel med bredden 1 (sen kan man ju diskutera hur hörnen ska se ut...).
3. Så vad du gör är att du bestämmer en faktor k, skapar en ny bild (km x kn) som är en uppskalning av originalet.
4. Sen ritar du din rektangel från punkt k*p0 till k*p1, med tjocklek k.
5. Till slut skalar du ner bilden till rätt storlek igen. Då får du gråskala på kantpixlar.
Här måste man vara försiktig så att inte vertikala eller horisontella streck blir två gråa. Antalet möjliga gråskalor i en pixel blir med den här lösningen k^2, och k behöver därför oftast inte vara högre än sqrt(256) = 16 (men då blir det en bra mycket större bild).
Sen är man ju lite smart och skippar uppskalningen; arbeta bara i den höga skalan, och skala ner när du ska visa det. Sv: Antialias i J2ME
så returnerar servicen url:en till din bild.
Det vore jäkligt IT ;-)
Men men..
Det finns en bra artikel om antialias på codeproject
http://www.codeproject.com/KB/GDI/antialias.aspx
förvisso i c++ men borde inte vara några problem att porta..Sv:Antialias i J2ME
1. De är ofta väsentligt mycket mer krångliga.
2. De är inte lika exakta.
3. På grund av 1. så blir de ofta långsamma om man inte är jävligt noggrann, tänker på cache coherence och grejer.
Men "min version" kräver att man har en grymt snabb (och bra) nersampling, och jag är osäker på om Java fixar det.
Kika här:
Allmänt: http://en.wikipedia.org/wiki/Antialiasing
"Min": http://en.wikipedia.org/wiki/Supersampling
"Rogers": http://en.wikipedia.org/wiki/Xiaolin_Wu%27s_line_algorithmSv: Antialias i J2ME
Skapa en GeneralPath av dina punkter, override paintComponent (eller om du nu skapar en egen... det är ju upp till dig), sätt RenderingHints på grafikobjektet och sedan rita upp GeneralPath med dem RenderingHints du har satt. Varför komplicera det?Sv:Antialias i J2ME
<edit> Jag antar att du menar swing?</edit>
/RickardSv: Antialias i J2ME