Borland C grafikk

H

H_u_n_t_e_r

Guest
Jeg har en buffer og jeg leser dette buffer og prøver å vise på skjermen med bildekontroll .. for 25000 piksler forbruker 2-3 andre sine veldig dårlig for meg.

er det noen effektiv måte av følgende kode

for (i = 0; i> 0; i )
Image1-> Canvas-> Piksler [YY] = buffer ;kan du foreslå en bok eller tutorial rask grafikk manuplation for Borland C Builder
Med vennlig hilsen.

 
Jeg fant dette ..Code:

void __fastcall TForm1:: Button2Click (TObject * Sender)

(

Grafikk:: TBitmap * pBitmap = new Graphics:: TBitmap ();

/ / Dette eksemplet viser tegning direkte til Bitmap

Byte * ptr;

prøve

(

/ / pBitmap-> LoadFromFile ( "MyBitmap.bmp");

pBitmap-> Height = 210; pBitmap-> Width = 201;

for (int y = 0; y <pBitmap-> Height; y )

(

ptr = (Byte *) pBitmap-> ScanLine [y];

for (int x = 0; x <pBitmap-> Width x )ptr [x] = (Byte) x;

)

/ / Image1-> Bilde-> Grafisk = pBitmap; / /

Canvas-> Draw (0,0, pBitmap);

)

catch (...)

(

ShowMessage ( "Kunne ikke laste eller endre bitmap");

)

slette pBitmap;

)
 
Hva vil du gjøre?

Paint verdiene i matrisen som en 1-D graf?Gjør punktene i matrisen inneholde, for eksempel sine verdier?

Av betyr array inneholder 2-D informasjonen?For eksempel et bilde?

Fra din beskrivelse ser det ut som det første tilfellet, men jeg er ikke sikker.

I det første eksemplet "for (i = 0; i> 0; i )" ser litt rart, ettersom det trolig vil male et mye mer enn 25000 piksler (forutsatt "i" er et 32 bits heltall).

I det andre eksemplet er det klart at alt går veldig fort når du kommenterer ut bredden og høyden innstilling, siden bitmap da vil beholde sin opprinnelige 0 av 0 pikslers størrelse.Så for loopen følgende vil det ikke gjøre noe arbeid i det hele tatt.

Så behage avklare ...

 
Gorilla Hei, hyggelig å se deg igjen
jeg har en 511x511 buffer som sine verdier utfylling av serieport.
så jeg ønsker å vise disse verdiene på image1 kontroll.I dont har en bildefil så jeg dont nød en loadfromfile funksjon ..
egentlig problemet er enkel "buffer til image1 kontroll" så fort.
beklager for tiden din, men jeg couldnt få gode svar fra noen.
Hilsener.

 
Vinduer, ikke sant?Jeg vet ikke Borland Builder, men den gode gamle Win32 metoden var å lage hele bitmap bilde i et minne buffer, og så blit det til skjermen ved å ringe Win32 API-funksjonen BitBlt ().Søk etter ditt kompilatoren docs for søkeord blit, bitblt eller bitblit.

 
jeg har løst mitt problem
Jeg håper disse kodene hjelper til noen ..
Problemet var fraværende pixelformat linje
pBitmap-> PixelFormat = pf16bit eller 24bit

im benytter 16bit grå ... pf16bit er ok jeg tror ??????

Code:Grafikk:: TBitmap * pBitmap = new Graphics:: TBitmap;

int i;

prøve

(

pBitmap-> PixelFormat = pf16bit;

pBitmap-> Height = 1000;

pBitmap-> Width = 1000;

for (i = 0; i <1; i )

for (int y = 0; y <pBitmap-> Height; y)

(

RGBTRIPLE * ptr = (RGBTRIPLE *) pBitmap-> ScanLine [y];

for (int x = 0; x <pBitmap-> Width; x)

(

ptr [x]. rgbtBlue = 255 * x;

ptr [x]. rgbtGreen = 255 * x;

ptr [x]. rgbtRed = 255 * x;

)

)

Image1-> Bilde-> Grafisk = pBitmap;

Image1-> Canvas-> Refresh ();

)

catch (Exception const &)

(

ShowMessage ( "Kan ikke lage bitmap");

)

slette pBitmap;
 
Hyggelig!

Jeg vil si at du må opprette en 24 bits punktgrafikk, slik hver R, G, B verdi kan variere 0-255 og med vist koden du får en gråskala bar (Edit: endrer "255 * x "uttalelser i bare" x ").

Med 16 bit pixel-format får du en colorfull mønster fordi R, G og B-verdiene er ikke det samme antall bits.

 
Quote:

Med 16 bit pixel-format får du en colorfull mønster fordi R, G og B-verdiene er ikke det samme antall bits.
 

Welcome to EDABoard.com

Sponsor

Back
Top