Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: QB: Ympyrän täyttäminen (VB6)

Sivun loppuun

Juhko [12.11.2006 20:17:31]

#

Kysymys on yksinkertainen: Kuinka QB:llä piirretty ympyrä täytetään?

hunajavohveli [12.11.2006 20:27:28]

#

Voit käyttää PAINT-komentoa, tosin tämä ei ole vedenpitävä keino, jos ympyrän sisällä on piirrettynä jotain muuta.

PAINT (x, y), täyttöväri, ympyrän_kehän_väri

Juhko [13.11.2006 14:07:46]

#

Joo tuon tiedän, mutta ympyrässä ei siis ole mitään erillistä täyttämisparametria?

tgunner [13.11.2006 14:32:19]

#

Ei ole, ja kuten olen (ehkä) sanonut aiemmin: niitä komentoja voi tutkia QBASICin helpistä (F1). Vaikka kirjoitat siihen CIRCLE ja siirrät kursorin tämän komennon päälle ja lyöt sen F1-näppäimen pohjaan niin eteesi pitäisi ponnahtaa pieni apuikkuna, joka sisältää tiedot komennosta, esimerkkejä ynm.

EDIT: päätin lisätä vielä CIRCLEn syntaksin:

CIRCLE (x,y),radius[,[color],[start],[stop],[ratio]]

Ja pienenä lukemisvihjeenä, noi hakasulut tarkoittavat valinnaisia toimintoja. Vain koordinaatit ja säde ovat pakollisia.

JoreSoft [17.11.2006 05:49:52]

#

Tuli mieleen yksi (hidas) tapa tehdä toi..
Tee se ympyrä erilliseen tyhjään kuvaan ja täytä se värillä.
Sitten For/Next silmukalla kopioit kuvasta ne pikselit jotka piirtovärinä. kai QB:ssä on GetPixel? tai jotain :)

Grey [17.11.2006 07:08:45]

#

JoreSoft kirjoitti:

Sitten For/Next silmukalla kopioit kuvasta ne pikselit jotka piirtovärinä.

Köh, tuo tapa taitaa olla hitusen liiankin hidas. Nopein tapa piirtää täytetty ympyrä ilman ongelmia olisi piirtää monta sisäkkäistä ympyrää. Eli piirretään silmukassa vaikka keskeltä aloittaen niin monta ympyrää että tulee, noh, se mitä halutaan. Pätee myös täytetyn neliön piirtämään, ja jopa monissa muissakin kuvioissa. Ehkä PAINTia hitaampi, mutta eipähän yhden pikselin puuttuminen reunasta sotke koko piirtoa..

-Grey-

JoreSoft [17.11.2006 13:23:31]

#

Tuossa olis pikkunen koodinpätkä (VB).
En tuota ensin tarjonnut, kun ajattelin että tulee moiré-ilmiö.. Mutta se tuleekin vain jos viivan paksuus on 1. Saahan sitä kasvatettua :)
Tuolla voi tehdä vaikka rinkeleitä :D

Private Sub Form_Click()
Me.ScaleMode = 3
Dim I%
    Me.DrawWidth = 2
    For I = 1 To 100
        Me.Circle (100, 100), I, &HFF
    Next I
End Sub

Juhko [18.11.2006 13:37:29]

#

Itse olen toteuttant täytetyn ympyrän näin:

X = 100
Y = 100
VARI = 14
FOR C = 1 TO 10
  CIRCLE (X, Y), (C), VARI
NEXT C

Mutta tuossa on ärsyttävää se, että jää pisteitä väliin. Voiko jotenkin korjata

tgunner [18.11.2006 15:34:56]

#

Kyllähän sitä COLOR-komentoa voisi käyttää ihan niiden pisteiden välttämiseksi.

crafn [18.11.2006 15:53:37]

#

Juhko, Laita näin:

X = 100
Y = 100
VARI = 14
FOR C = 1 TO 10 STEP 0.1
  CIRCLE (X, Y), (C), VARI
NEXT C

Juhko [18.11.2006 16:03:03]

#

Kumpikaan ei auta. QB pyöristää desimaaliluvut ja COLOR toimii vain tekstiin.

Legu [18.11.2006 16:20:46]

#

En tiedä paljoa QB:stä, mutta jos sulla on (?) tyyppi INTEGER, niin sillonhan se ne pyöristää. Vaihdappa tähän:

DIM C AS DOUBLE

hunajavohveli [18.11.2006 16:38:50]

#

Ei onnistu. QB:ssä ympyrän säde voi olla vain kokonaisluku, ja sellaiseksi se pyöristyy automaattisesti.

moptim [18.11.2006 16:44:41]

#

Kuis se sit toimii...
EDIT: voi hitsi kun QBasicissa ei ole drawwidth parametria, VB:ssä on ja niin voi tehdä paksun täytetyn ympyrän.

moptim [23.11.2006 20:23:16]

#

Hei, saatoin keksiä. Jollekin näyttötasolle täytetty ympyrä, ja sitten PCOPY:llä heitetään ympyrä käytetylle bittitasolle. Toimisiko?


Sivun alkuun

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta