Avatar billede l_hoffmann Nybegynder
20. januar 2004 - 13:32 Der er 4 kommentarer

Farve en cirkel

Hvordan får jeg fyldt en cirkel ud med farve i c?
Jeg har prøvet med Floodfill men syntes ikke jeg kan få det til at virke.
Avatar billede bertelbrander Novice
20. januar 2004 - 19:43 #1
Følgende virker:

int Paint(void)
{
  PAINTSTRUCT PaintStruct;
  HDC DCHandle = BeginPaint(hwndMain, &PaintStruct);
  HPEN Pen = CreatePen(PS_SOLID, 10, RGB(0, 0, 255));
  HPEN OldPen = SelectObject(DCHandle, Pen);
  HBRUSH Brush = CreateSolidBrush(RGB(255, 0, 0));
  HBRUSH OldBrush = SelectObject(DCHandle, Brush);
  Ellipse(DCHandle, 10, 10, 100, 100);
  FloodFill(DCHandle, 50, 50, RGB(0, 0, 255));
  SelectObject(DCHandle, OldBrush);
  SelectObject(DCHandle, OldPen);
  EndPaint(hwndMain, &PaintStruct);
  return 1;
}

Funktionen kaldes ved WM_PAINT, hvis du vil bruge den et andet sted bruger du GetDC() og ReleaseDC() til at hente/frigive  i DC'en.
Husk at den color du angiver i kaldet til FloodFill() ikke er den farve der fyldes med, men den farve der omgiver det område du vil fylde. FloodFill fylder med den brush der er valgt.
Avatar billede bertelbrander Novice
20. januar 2004 - 23:52 #2
Du for en god ordens skyld tilføje følgende inden "return 1;":

DeleteObject(Pen);
DeleteObject(Brush);
Avatar billede l_hoffmann Nybegynder
21. januar 2004 - 08:19 #3
Jeg tror det er en ældre version af C jeg laver.... for jeg kan ikke få det eks. til at virke.
Avatar billede bertelbrander Novice
21. januar 2004 - 19:05 #4
Jeg tror ikke det er er ældre version af C du laver, koden ovenfor burde virke med alle windows kompilere der er laver inden for de sidste 8-10 år.

Måske kan du fortælle lidt mere, f.ex. hvilken kompiler du bruger, hvordan din kode ser ud, får du nogen fejl når du kompilerer eller sker der bare ikke noget når du kører programmet, hvad er det du forsøger at tegne på, kan du tegne andet der hvor du forsøger at fylde din cirkel, hvordan laver du cirklen, ...
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
Kurser inden for grundlæggende programmering

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