Imagini salvate de la cutia de vopsea

Imagini salvate de la cutia de vopsea

Aici pentru timage este asta, totul este simplu -
Image1.Picture.Bitmap.SaveToFile (nume);
dar ce sa faci pentru tpaintbox, se pare ca nu exista asa ceva, adica, așa că nu vei scrie -






paintbox1.Picture.Bitmap.SaveToFile (nume);

TPaintBox are o pânză


> ce să faci pentru tpaintbox

Creați un bitmap, atrageți-l la același lucru, salvați-l și distrugeți-l.

de ce este pentru tine, este programarea?

Închiriați un programator, plătiți bani. Orice este mai bun decât închirierea unui site gratuit

Ie sa dovedit așa, numai ceea ce este vizibil este păstrat.

Deci, creați această dimensiune Bitmap și trageți pe ea, astfel încât totul să fie pe el.

Și ce împiedică Paintbox-ul să fie mai mare decât zona vizibilă și să-l pună pe ScrollBox?

> Amoeba_ # xA0; (09.04.13 22:26) [17]
BitMap poate fi făcut mai mare decât zona vizibilă, iar PaintBox desenează numai ceea ce se află în zona vizibilă.


> PaintBox atrage numai ceea ce se află în zona vizibilă

Acesta și ariciul beat sunt de înțeles.

TC pare să nu înțeleagă ceea ce îl sfătuiesc. Sa intenționat NU să copiați la Bitmap cu PaintBox.Canvas și de la zero la DRAW pe Canvas cu același cod, # xA0; pe PaintBox.

Să-i arate codul, prin care creează o imagine pe Bitmap. "E.

> Amoeba_ (10.04.13 11:10) [19]
> Să-i arătați codul, prin care creează o imagine pe Bitmap. "E.
(c) (r)

Da, și trageți același cod este destul de dificil, o mulțime de cod.


> Amoeba_ (10.04.13 16:42) [22]

Există, de asemenea, Form1.Canvas.foo (). Și pentru a refactor codul mucoasei este ca moartea.

Nu, există nici imagine.canvas sau paintbox.canvas, de asemenea, refactoringul nu este o opțiune, acum pentru a imprima, redraw tot ce ai nevoie. Amoeba_ # xA0; (10.04.13 16:42) [22], poate că aceasta este o cale de ieșire bună.







> Amoeba_ (10.04.13 16:42) [22]
Și cum să transmită panza ca parametru, ceva ce nu prea îmi imaginez.

procedura DrawMyPicture (Canvas: TCanvas);
începe
# xA0; cu Canvas face
# xA0; începeți
# xA0; # xA0;. // aici facem tot desenarea atât pe PaintBox, cât și pe Bitmap
# xA0; sfârșitul;
se încheie;

Atragem pe PaintBox în OnPaint astfel
DrawMyPicture (PaintBox.Canvas);

Atragem pe Bitmap și o salvăm într-o metodă specială
TempBitmap: = TBitmap.Create;
încerca
# xA0; DrawMyPicture (TempBitmap.Canvas);
# xA0; TempBitmap.SaveToFile (NumeFile);
în cele din urmă
# xA0; TempBitmap.Free;
se încheie;


> acum pentru a imprima, redrage tot ce ai nevoie

Și ce e în neregulă cu asta? Un fenomen normal.

> Amoeba_ (11.04.13 11:40) [26]
Mulțumesc, poate fi foarte bine folosit ..

Dacă intenționați să salvați sau să derulați imaginea - bine, utilizați TImage, TPaintBox pentru alte scopuri, în general, de neînțeles pentru mine ..

> Amoeba_ (11.04.13 11:40) [26]
Câștigat, transferat panza ca parametru).

Iată cum sa întâmplat ceva ciudat, de ce pe PaintBox nu se suprapune imediat două raze bitmap, se pare că imaginea principală nu este vizibilă deloc -
procedura TForm4.PaintBox1Paint (expeditor: TObject);
var BitMap: TBitMap;
# xA0; LenL; LenR: LongInt;
începe
DrawPicture (PaintBox1.Canvas); // 1, aici principalul # xA0; desen
// 2, fereastra care trebuie spânzurată -
# xA0; afișare # xA0; # xA0; # xA0; : = TBitmap.Create; # xA0;
# xA0; Display.Width: = PaintBox1.Width;
# xA0; Display.Height: = PaintBox1.Height;

# xA0; // Curățați pânza.
# xA0; Display.Canvas.Brush.Color: = clWhite;
# xA0; Afișare.Canvas.FillRect (Afișare.CanvasClipRect);

# xA0; // Desenați fereastra.
# xA0; Display.Canvas.Pen.Width: = 2;
# xA0; Display.Canvas.Pen.Color: = clBlack;
# xA0; Display.Canvas.Brush.Color: = clRed;
# xA0; Display.Canvas.Rectangle (GetRectWindow);

# xA0; Display.Canvas.Pen.Width: = 2;
# xA0; Display.Canvas.Pen.Color: = clBlack;

# xA0; // Output.
# xA0; PaintBox1.Canvas.Draw (0, 0, afișare);
# xA0; Display.Free;

// 3, ușa este un desen suprapus
dacă (Unit_Main.sdv<>0) sau (Unit_Main.sok<>0) apoi BitMap: = TBitMap.Create;
dacă Unit_Main.sdv<>0 atunci
începe
# xA0; // Load Bitmap a fișierului grafic selectat
# xA0; BitMap.LoadFromFile ("imagine / dv.bmp");
# xA0; // Transferați imaginea pe panza formei
# xA0; paintbox1.Canvas.Draw (rotund (dl-65), rotund (hp-130) + rotund (ver), BitMap);
# xA0; // Distruge obiectul BitMap
se încheie;

uzho este clar - Display.Transparent: = Adevărat;







Trimiteți-le prietenilor: