Builder.cz - Informacni server o programovani

Odběr fotomagazínu

Fotografický magazín "iZIN IDIF" každý týden ve Vašem e-mailu.
Co nového ve světě fotografie!

 

Zadejte Vaši e-mailovou adresu:

Kamarád fotí rád?

Přihlas ho k odběru fotomagazínu!

 

Zadejte e-mailovou adresu kamaráda:

Soutěž

Sponzorem soutěže je:

IDIF

 

Kde se koná výstava fotografií Luďka Vojtěchovského?

V dnešní soutěži hrajeme o:



Algoritmus a vykreslenie čiary širšej ako1px

Seznam témat     Nová odpověď

Přihlásit se     Registrace     Zapomenuté heslo

Re: Algoritmus a vykreslenie čiary širšej ako1px

Autor: Jefo1 ♂

22:57:32 04.09.2015

Urobil som to podla vášho postupu, kreslenie pixelov ako kružnice a funguje to celkom fajn. Ďakujem

Citovat příspěvek

 

Re: Algoritmus a vykreslenie čiary širšej ako1px

Autor: peta1 ♂

11:23:35 04.09.2015

No, to spis patri do java forka, ne?

Mi se tam treba nelibi
while(true) - coz je cyklus do nekonecna
d = d +- ax; - to vypada divne
d = ay - ax / 2; - kdyz se neco deli a vypisuje na obrazovku, tak se to zaokrouhluje pres round, floor na cele cislo, obvykle

Pro sirku 2px se vykresluje ta sama cara jen posunuta, x+1px nebo y+1px, ne? Pripadne se kresli vyplneny kruh misto pixelu.

Citovat příspěvek

 

Algoritmus a vykreslenie čiary širšej ako1px

Autor: Jefo1 ♂

13:30:15 03.09.2015

Dobrý deň,
programujem jednoduchý grafický editor v Jave. Naprogramoval som si algoritmus korý mi kreslí čiary o šírke 1px. Potreboval by som ale kresliť čiary aj o šírke väčšej ako 1px. Môžete mi prosím pomôcť lebo moja úprava algoritmu robila vo vykreslovaní chyby. Tu je môj algoritmus s šírkou čiary 1px :

public void DrawLine(int x0, int y0,int x1, int y1)
{


int dx = x1 - x0, ax = Math.abs(dx) * 2,sgnx = dx < 0 ? -1 : 1;
int dy = y1 - y0, ay = Math.abs(dy) * 2,sgny = dy < 0 ? -1 : 1;
int x = x0, y = y0;
int d = 0;
if(ax > ay)
{
d = ay - ax / 2;
while(true)
{
cells[x][y] = new JCanvasCell(JMyCellType.Line, Color.red);

if(x == x1) return;
if(d >= 0)
{
y = y + sgny;
d = d +- ax;
}
x = x + sgnx;
d = d + ay;
}
}
else
{
d = ax - ay / 2;
while(true)
{
cells[x][y] = new JCanvasCell(JMyCellType.Line, Color.red);

if(y == y1) return;
if(d >= 0)
{
x = x + sgnx;
d = d - ay;
}
y = y + sgny;
d = d + ax;
}
}
}

Za odpoveď dakujem.

Citovat příspěvek

 

 

 

Přihlášení k mému účtu

Uživatelské jméno:

Heslo: