Avatar billede scarlac Nybegynder
04. december 2005 - 23:13 Der er 5 kommentarer

CopyRect i C#: Kopiering af område af et Graphics obj. til et 2.

Titlen er meget beskrivende, egentligt:
Jeg ønsker at kopiere et område af en Graphics til et andet.

Mit ønske er at skabe en slags "off screen" buffer, hvor jeg optegner alt, og når jeg får af vide at en del af skærmen skal genoptegnes gennem OnPaint(...) så henter jeg blot data fra bufferen (Graphics objektet) og kopierer det op på skærmen.

Mit problem er at jeg ikke kan finde en metode der kopierer fra et graphics objekt til et andet.

Pseudokoden (som jeg havde forestillet mig den ville fungere):
(Graphics visualArea, dirtyArea;)

visualArea.CopyRectangle(dirtyArea, dirtyArea.left, dirtyArea.top, dirtyArea.width, dirtyArea.height);

så signaturen for metoden er altså (igen: dette er MIN forestiling):

Graphics.CopyRectangle(Graphics otherGraphic, int offsetLeft, int offsetTop, int width, int height);

- På forhånd tak :)
Avatar billede bitsch Nybegynder
06. december 2005 - 14:12 #1
Ikke fordi at det er en løsning jeg selv har prøvet, men du kan "grabbe" til en System.Drawing.Bitmap som du så derefter kan gentegne.

Normalt ville man dog kreere sin grafik i en Path som så tegnes/gentegnes i OnPaint.
Avatar billede scarlac Nybegynder
07. december 2005 - 10:42 #2
Jeg fandt en løsning i forgårs vha. et bitmap. Det fungerer nu, men det er noget værre noget ifht. hvad jeg er vandt til - det burde fungere lidt enklere :/

Jeg er dog interesseret i at høre noget mere specifikt om din Path løsning? Det har jeg ikke hørt om før. Gerne mere konkret en nævelse af et klassenavn ;)
Avatar billede bitsch Nybegynder
07. december 2005 - 15:57 #3
Det du skal se efter er en System.Drawing.Drawing2D.GraphicsPath. Som kan betragtes som en slags buffer, hvor du adderer din grafik til.

http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpref/html/frlrfsystemdrawingdrawing2dgraphicspathclasstopic.asp
Avatar billede scarlac Nybegynder
07. december 2005 - 17:03 #4
Det var stadig ikke særlig konkret. Jeg savner et konkret eksempel - men fair nok. du har kommet med 2 forslag, og jeg har allerede fundet løsningen, så du får pointene som tak for indsatsen :)
Avatar billede bitsch Nybegynder
07. december 2005 - 21:59 #5
Eksempler afhænger jo af hvad du konkret vil opnå. Ved at søge på nettet vil du få en masse fine eksempler. Her er f.eks. et eksempel der viser hvordan man kan lave pæne knapper samt group boxe. http://www.codeproject.com/cs/miscctrl/Cool_Buttons_and_Groupbox.asp om det tilfredsstiller dit scenarie ved jeg ikke, men eksemplet kommer rimeligt gennem emnet.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester