Monochromatyczny wyswietlacz 240x128

0

Witam!!
Mam wyswietlacz jak w tytule. Steruje nim procek AVR. Procek potrzebuje danych do wyswietlenia w formie tablicy(1 pixel=1 bit,8 pixeli=1bajt->tak jak w BMP monochromatycznej ). Chce napisac programik w delphi, ktory bedzie przetwarzal to co narysuje na wirtualnym wyswietlaczu(w napisanym programie) i bedzie przetwarzal na gotowa tablice.
I teraz moje pytanie:

  1. Czy ulozyc obok siebie 240x128 komponentow TShape, ktore przyjmuja albo kolor bialy albo czarny,i reaguja na przycisniecie lewa przyciskiem myszy??(troche zmudna praca)
  2. Czy moze wykorzystac komponent TImage??,a jesli tak, to jak operowac na pojedynczych pixelach w TImage i przeksztalcac to pozniej na bajty??
    Pozdrawiam/smalski
0

Hmm, technicznie nie jest to trudne ale ciekawe koncepcyjnie. Możesz użyć czegoś z canvas i ustalić rozmiar. Potem odczytywać podczas naciśnięcia myszy współrzędne punktu naciśnięcia. Do tego naciśnięcie myszki zmeiniałoby kolor pixela, a najlepiej 2 warianty - naciśnięcie ustala kolor na (tu wybór biały lub czarny), naciśnięcie zmienia kolor. DO tego w zależności od rozmiaru ekranyu możesz oprogramować wersję jedned do jeden lub np 4 pixele ekranu to jeden rzeczywisty - wówczas musisz przetwarzać położenie myszki i kolorować po 4 pixele równoczesnie. Całość nieco pracochłonna, ale niezbyt trudna i masz całość od podstaw i wszystko w twoich procedurkach. To moje spojrzenei na problem neikoniecznie najlepsze:)

0

A może np. DrawGrid i jeden pixel to jedna celka :>

0

Do właśnie takich rzeczy służy TPaintBox.

0

W najprostszym przypadku można zrobić:

const
SIZE=10;

var
tab:array[0..239, 0..127] of boolean;

// rysowanie
for a=0 to 239 do
for b=0 to 127 do
begin
if tab[a, b] then
canvas.brush.color:=clblack
else
canvas.brush.color:=clwhite;
canvas.pen.color:=clgray;
canvas.rectangle(a*SIZE, b*SIZE, a*SIZE+SIZE, b*SIZE+SIZE);
end;

// zmiana stanu w onmousedown
x:=x div SIZE;
y:=y div SIZE;
tab[x, y]:=not tab[x, y];

1 użytkowników online, w tym zalogowanych: 0, gości: 1