Kysymys on yksinkertainen: Kuinka QB:llä piirretty ympyrä täytetään?
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
Joo tuon tiedän, mutta ympyrässä ei siis ole mitään erillistä täyttämisparametria?
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.
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 :)
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-
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
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
Kyllähän sitä COLOR-komentoa voisi käyttää ihan niiden pisteiden välttämiseksi.
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
Kumpikaan ei auta. QB pyöristää desimaaliluvut ja COLOR toimii vain tekstiin.
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
Ei onnistu. QB:ssä ympyrän säde voi olla vain kokonaisluku, ja sellaiseksi se pyöristyy automaattisesti.
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.
Hei, saatoin keksiä. Jollekin näyttötasolle täytetty ympyrä, ja sitten PCOPY
:llä heitetään ympyrä käytetylle bittitasolle. Toimisiko?
Aihe on jo aika vanha, joten et voi enää vastata siihen.