ďťż

Ładny brzuch

Witam!

Babram się ze swoim programem graficznym do transformacji 3d i co raz muszę coś zmieniać, bo taki jest np. wymóg pamięciowy (komputer nie może operować na zbyt duzych tablicach). W każdym razie muszę pobrać kolor piksela o określonych współrzędnych x i y. Do tego celu NIE MOGĘ użyć RGBQUAD - po pierwsze dlatego żeby kod był czytelniejszy, po drugie RGBQUAD ma pewne ograniczenia. Muszę się odwołać przez Picture->Bitmap->Pixels[x][y]

Mój kod jest taki:

Plik nagłówkowy (tylko struktury przeze mnie napisane):
// struktura opisująca kolor typedef struct kolor2d_typ        {         TColor kolor;        } kolor2d, *kolor2d_ptr; // współrzędne pixela oraz jego kolor typedef struct pixel2d_typ        {         kolor2d p2d[1000][1000];        } pixel2d, *pixel2d_ptr;

Plik źródłowy:
//--------------------------------------------------------------------------- #include <vcl.h> #pragma hdrstop #include "Pikselix.h" //--------------------------------------------------------------------------- #pragma package(smart_init) #pragma resource "*.dfm" TPikselix_main *Pikselix_main; // zmienne int x, y;      // współrzędne obrazka pixel2d p_xy;  // mój typ zmiennej //--------------------------------------------------------------------------- __fastcall TPikselix_main::TPikselix_main(TComponent* Owner)        : TForm(Owner) { } //--------------------------------------------------------------------------- void __fastcall TPikselix_main::Btn_TerminateClick(TObject *Sender) { Application->Terminate();         } //--------------------------------------------------------------------------- void __fastcall TPikselix_main::Btn_LoadClick(TObject *Sender) { if (OD_Load_image->Execute()) Im_pikseloza->Picture->LoadFromFile(OD_Load_image->FileName); } //--------------------------------------------------------------------------- void __fastcall TPikselix_main::Btn_GetClick(TObject *Sender) { if (Im_pikseloza->Picture->Bitmap->Empty)    ShowMessage("Musisz załadować obrazek bmp");    else        {        Im_pikseloza->Picture->Bitmap->PixelFormat=pf32bit;        // pobranie współrzędnych        x=StrToInt(E_x->Text);        y=StrToInt(E_x->Text);        // pobranie koloru piksela        p_xy.p2d[x][y].kolor=Im_pikseloza->Picture->Bitmap->Canvas->Pixels[ y][x];        // wyswietlenie koloru piksela w oknie Kolor Piksela:        E_kolor->Text=p_xy.p2d[x][y].kolor;        } } //--------------------------------------------------------------------------- void __fastcall TPikselix_main::Im_pikselozaMouseDown(TObject *Sender,      TMouseButton Button, TShiftState Shift, int X, int Y) { // pobranie współrzędnych E_x->Text=X; E_y->Text=Y; }

Nie jest to oczywiście cały program, a tylko ta część która pobiera dane piksela.
Jeżeli ktoś wie jak to zrobić byłbym bardzo wdzięczny za pomoc.
Oczekuję konkretnych porad. :]

Pozdrawiam!



Chciałbym zakomunikować wszystkim zainteresowanym moim problemem, że udało mi się już uzyskać odpowiedź na problem, który powyżej przedstawiłem. :D :D :D

Rozwiązanie znajduje się na http://warsztat.pac.pl , na Forum ,
w dziale Szkółka-Grafika,
pod tytułem: "Odczytywanie i ustawianie koloru piksela w BCB_6".

Pozdrawiam! :)

P.S. Jeszcze raz:
DZIĘKI revo i bies !!! :D

  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • zsf.htw.pl
  •