framebuf — kehyspuskurin käsittely¶
framebuf -moduuli tarjoaa pienen, allokointivapaan pikselipuskurin alkeellisilla piirto-operaatioilla. Se on tarkoitettu ulkoisten näyttöjen (OLED, LCD, e-paper jne.) ohjaamiseen.
Muista
Kaapattujen kehysten kuvankäsittelytyöhön kannattaa käyttää OpenMV:n paljon monipuolisempaa image.Image -luokkaa – se tarjoaa huomattavasti enemmän piirto-primitiivejä, värimuunnoksia ja analyysiominaisuuksia kuin framebuf.
class FrameBuffer¶
A FrameBuffer wraps a user-supplied buffer-protocol object
(typically a bytearray) and exposes methods to draw pixels,
lines, rectangles, ellipses, polygons, text and other FrameBuffers into it.
Esimerkki:
import framebuf
# FrameBuffer needs 2 bytes for every RGB565 pixel.
fbuf = framebuf.FrameBuffer(bytearray(100 * 10 * 2), 100, 10, framebuf.RGB565)
fbuf.fill(0)
fbuf.text("MicroPython!", 0, 0, 0xffff)
fbuf.hline(0, 9, 96, 0xffff)
Muodostimet¶
- class framebuf.FrameBuffer(buffer: Any, width: int, height: int, format: int, stride: int | None = None, /)¶
Muodostaa
FrameBuffer-olion.buffer– mikä tahansa buffer-protokollaa tukeva olio; sen on oltava riittävän suuri pitämäänstride * heightpikseliä valitussaformat-muodossa.width– kehyspuskurin leveys pikseleinä.height– kehyspuskurin korkeus pikseleinä.format– pikselimuoto; yksi alla kohdassa Vakiot luetelluista vakioista. Muoto määrittää sekä kunkin pikselin koonbuffer-puskurissa että sen, miten mihin tahansa piirtometodiin välitetty väri-kokonaislukuctulkitaan.stride– pikselien määrä vaakarivillä, mukaan lukien mahdollinen täyte. Oletuksenawidth. Aseta tämä käyttääksesi suuremman puskurin osa-aluetta.
Liian pienen
buffer-puskurin tai virheellisten mittojen välittäminen tuottaa määrittelemättömiä tuloksia – muodostin ei validoi jokaista yhdistelmää.
Piirtometodit¶
- FrameBuffer.fill_rect(x: int, y: int, w: int, h: int, c: int) None¶
Täyttää
wxh-kokoisen suorakulmion kohdassa(x, y)värilläc. Vastaarect()-metodia argumentillaf=True.
- FrameBuffer.pixel(x: int, y: int, c: int | None = None) int | None¶
Ilman
c-argumenttia palauttaa pikselin väriarvon kohdassa(x, y). Kuncon annettu, asettaa kyseisen pikselin väriinc.
- FrameBuffer.hline(x: int, y: int, w: int, c: int) None¶
- FrameBuffer.vline(x: int, y: int, h: int, c: int) None¶
- FrameBuffer.line(x1: int, y1: int, x2: int, y2: int, c: int) None¶
Piirtää 1 pikselin paksuisen viivan värillä
c.hline()javline()piirtävät annetun pituisen vaaka-/pystyviivan;line()piirtää viivan kahden mielivaltaisen pisteen välille.
- FrameBuffer.rect(x: int, y: int, w: int, h: int, c: int, f: bool = False) None¶
Piirtää suorakulmion kohtaan
(x, y)kokoawxhvärilläc. JosfonTrue, suorakulmio täytetään; muuten piirretään vain 1 pikselin ääriviiva.
- FrameBuffer.ellipse(x: int, y: int, xr: int, yr: int, c: int, f: bool = False, m: int = 0) None¶
Piirtää ellipsin, jonka keskipiste on
(x, y), x-säteelläxrja y-säteelläyrvärilläc. Yhtä suuret säteet tuottavat ympyrän.f=Truetäyttää muodon pelkän ääriviivan piirtämisen sijaan.mon bittimaski, joka rajoittaa piirtämisen tiettyihin neljänneksiin (numeroitu vastapäivään oikeasta yläkulmasta):Bitti
Neljännes
Alue
bitti 0
Q1
Oikea yläkulma
bitti 1
Q2
Vasen yläkulma
bitti 2
Q3
Vasen alakulma
bitti 3
Q4
Oikea alakulma
Oletusarvo
m=0piirtää kaikki neljä neljännestä.
- FrameBuffer.poly(x: int, y: int, coords: Any, c: int, f: bool = False) None¶
Piirtää mielivaltaisen suljetun monikulmion (kupera tai kovera) siirtymässä
(x, y)värilläc.coordson oltavaarrayetumerkillisiä 16-bittisiä kokonaislukuja muodossaarray('h', [x0, y0, x1, y1, ..., xn, yn]).f=Truetäyttää monikulmion pelkän ääriviivan piirtämisen sijaan.
- FrameBuffer.text(s: str, x: int, y: int, c: int = 1) None¶
Piirtää merkkijonon
ssiten, että sen vasen yläkulma on kohdassa(x, y)värilläc. Sisäänrakennettu fontti on kiinteästi 8x8 pikseliä eikä sitä voi muuttaa.con oletuksena1.
- FrameBuffer.scroll(xstep: int, ystep: int) None¶
Siirtää puskurin sisältöä määrällä
(xstep, ystep). Puskurin ulkopuolelta sisään siirtyviä pikseleitä ei tyhjennetä, joten edellisen sisällön ”haamukuva” voi jäädä jälkireunaan.
- FrameBuffer.blit(fbuf: FrameBuffer | Tuple, x: int, y: int, key: int = -1, palette: FrameBuffer | None = None) None¶
Piirtää toisen kehyspuskurin
fbuftämän päälle siten, että sen vasen yläkulma on kohdassa(x, y).Jos
keyon annettu, jokainen kyseistä väriarvoa vastaava lähdepikseli käsitellään läpinäkyvänä eikä sitä piirretä. Kunpaletteon annettu, vertailu tehdään palettilähtöä eikä raakaafbuf-arvoa vastaan.fbufvoi ollaFrameBuffer-ilmentymä tai muodostimen allekirjoitusta vastaava monikko/lista:(buffer, width, height, format) (buffer, width, height, format, stride)
Kun lähde on monikko/lista,
buffervoi olla vain luku -muotoinen.palettemahdollistaa blittauksen eri muotoisten puskureiden välillä – esimerkiksi yksivärisen glyfin renderöinnin RGB565-puskuriin. Se onFrameBuffer, jonka muoto vastaa kohdetta, korkeus on 1 ja leveys yhtä suuri kuin lähdevärien määrä (2**NN-bittiä-per-pikseli -lähteelle). Lähdepikselin arvoikorvataan värillä kohdassapalette[i, 0]ennen piirtämistä.
Vakiot¶
Muodostin hyväksyy seuraavat format -arvot. ”Tavua per pikseli” -sarake on kerroin, joka tarvitaan taustapuskurin kokoa määritettäessä.
Vakio |
Tavua/pikseli |
Pikseliasettelu |
|---|---|---|
|
0.125 |
Yksivärinen (1-bittinen). Kukin tavu pitää 8 pystysuunnassa pinottua pikseliä siten, että bitti 0 on lähimpänä yläreunaa. 8 pikselin rivit etenevät vasemmalta oikealle puskurin yli ja kiertyvät sitten seuraavalle 8 pikselin riville. |
|
0.125 |
Yksivärinen (1-bittinen). Kukin tavu pitää 8 vaakapikseliä siten, että bitti 7 on vasemmalla. Rivit etenevät pystysuunnassa yksi pikseli kerrallaan. |
|
0.125 |
Yksivärinen (1-bittinen). Kuten |
|
0.25 |
2-bittinen harmaasävy (4 tasoa), pakattu vaakasuunnassa merkitsevin bitti ensin. |
|
0.5 |
4-bittinen harmaasävy (16 tasoa), pakattu vaakasuunnassa merkitsevin nibble ensin. |
|
1 |
8-bittinen harmaasävy (256 tasoa). |
|
2 |
16-bittinen RGB, jossa 5 punaista, 6 vihreää ja 5 sinistä bittiä. |
framebuf.MVLSB on vanhentunut alias arvolle framebuf.MONO_VLSB; suosi jälkimmäistä uudessa koodissa.
Vanha muodostin¶
- framebuf.FrameBuffer1(buffer: Any, width: int, height: int, stride: int | None = None, /) FrameBuffer¶
Vanhentunut pikakomento muodolle
FrameBuffer(buffer, width, height, framebuf.MONO_VLSB, stride). Säilytetty taaksepäin yhteensopivuuden vuoksi; käytä sen sijaan täyttäFrameBuffer-muodostinta.