Borland C grafika

H

H_u_n_t_e_r

Guest
man ir buferis un i lasa šo buferi un mēģina parādīt uz ekrāna ar attēla kontroli .. par 25000 pikseļi patērē 2-3 otrais ir ļoti slikti par mani.

ir kāda efektīvs veids, kā šādu kodu

(i = 0; i> 0; i )
Image1-> Gleznas-> Pikseļu [YY] = buferšķīduma ;vai Jūs varētu ieteikt grāmatu vai apmācība ātri grafikas manuplation par Borland c celtnieks
Ar laba vēlējumiem.

 
Es atklāju šo ..Kods:

spēkā __fastcall TForm1: Button2Click (TObject * Sender)

(

Grafika: TBitmap * pBitmap = jauns Grafika: TBitmap ();

/ / Šis piemērs parāda, rasējums tieši Bitmap

Byte * PTR;

mēģināt

(

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

pBitmap-> augstums = 210; pBitmap-> platums = 201;

uz (int y = 0, y <pBitmap-> augstums; y )

(

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

uz (int x = 0; x <pBitmap-> platums, x )PTR [x] = (Byte) x;

)

/ / Image1-> Picture-> Grafikas = pBitmap; / /

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

)

nozvejas (...)

(

ShowMessage ("Nevarēja ielādēt vai mainīt bitkartes");

)

dzēst pBitmap;

)
 
Ko tieši jūs vēlaties darīt?

Paint vērtības jūsu masīvā kā 1-D diagrammu?Vai punkti masīvs satur, piemēram, sine vērtības?

Gada nav masīvs satur 2-D informāciju?Piemēram attēls?

No Jūsu apraksta izskatās, ka pirmajā gadījumā, bet es neesmu pārliecināts.

Kā pirmajā piemērā "(i = 0; i> 0; i )" izskatās mazliet dīvaini man, jo tas, iespējams, krāsu daudz vairāk nekā 25000 pikseļi (pieņemot, ka "i" ir 32 bitu vesels skaitlis).

Otrajā piemērs ir skaidrs, viss iet ļoti ātri, kad jūs komentēt, kas Platums un Augstums, kurā, jo bitmap tad saglabā savu sākotnējo 0 līdz 0 pikseļa izmēru.Tātad, lai cilpa turpmāk tā darīs bez darba vispār.

Tātad, lūdzu, precizēt ...

 
Hi Gorilla, patīkami redzēt jūs atkal
Man ir 511x511 buferšķīdumā, kas tās vērtības aizpildot ar seriālo pieslēgvietu.
tad es gribu parādīt šo vērtību par Image1 kontroli.I dont ir attēla fails, lai es dont nepieciešamību loadfromfile funkcija ..
patiesībā problēma ir vienkārši "buferi uz Image1 kontrolē", kā strauji, kā.
atvainojos par savu laiku, bet es couldnt get labas atbildes no ikviens.
Sveicienus.

 
Logi, labi?Es nezinu Borland Builder, bet veco labo Win32 metodi, lai izveidotu visu jūsu bitkartes attēlu atmiņas buferī un pēc tam blit to ekrāna zvanot Win32 API funkcijas BitBlt ().Meklē savu kompilatoru docs atslēgvārdus blit, bitblt vai bitblit.

 
i ve atrisināt manu problēmu
Es ceru, ka šie kodi palīdz kādam ..
Problēma trūka pixelformat līnija
pBitmap-> PixelFormat = pf16bit vai 24bit

im, izmantojot 16bit pelēks ... pf16bit ir ok Es domāju, ka ??????

Kods:Grafika: TBitmap * pBitmap = jauns Grafika: TBitmap;

int i;

mēģināt

(

pBitmap-> PixelFormat = pf16bit;

pBitmap-> augstums = 1000;

pBitmap-> platums = 1000;

(i = 0; i <1, i )

uz (int y = 0, y <pBitmap-> augstums; y)

(

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

uz (int x = 0; x <pBitmap-> platums, x)

(

PTR [x] rgbtBlue = 255 *. x;

PTR [x] rgbtGreen = 255 *. x;

PTR [x]. rgbtRed = 255 * x;

)

)

Image1-> Picture-> Grafikas = pBitmap;

Image1-> Gleznas-> Refresh ();

)

nozveja (const Izņēmums &)

(

ShowMessage ("Nevarēja izveidot bitmap");

)

dzēst pBitmap;
 
Nice!

Es teiktu jums ir nepieciešams, lai izveidotu 24 bitu bitmap, tādā veidā katrs R, G, B vērtība var būt 0-255, un ar norādīto kodu jūs saņemsiet pelēktoņu bar (Edit: vai mainīt "255 * x "paziņojumus, vienkārši" x ").

Ar 16 bitu pikseļu formātam jums colorfull modelis, jo R, G un B vērtības nav vienādas bitu skaitu.

 
Quote:

Ar 16 bitu pikseļu formātam jums colorfull modelis, jo R, G un B vērtības nav vienādas bitu skaitu.
 

Welcome to EDABoard.com

Sponsor

Back
Top