webForumDet fria alternativet

Eget paint

6 svar · 266 visningar · startad av Thompa__85

Thompa__85Medlem sedan aug. 2002601 inlägg
#1

Tjenare! Sitter och kodar ett litet Paint liknande program!
Och skulle vilja ha så man kan färga hela fönstret, alltså "hinken" i paint... Har inte en aning om hur jag ska göra... :q

// Thomsson

rymdknarkMedlem sedan maj 2000175 inlägg
Thompa__85Medlem sedan aug. 2002601 inlägg
#3

rymdknark skrev:

http://www.allapi.net/apilist/FloodFill.shtml

Hmm okej.. fattade inte mycket av det där tyvärr :/

Thompa__85Medlem sedan aug. 2002601 inlägg
#4

kan jag inte använda mig av Fillcolor i detta läge?
Men får iallafall itne det att funka :/

XyziMedlem sedan mars 20034 inlägg
#5

Det där (FloodFill) var en api-funktion.
Det är en av alla de enkla, små, mycket praktiska funktioner som följer med windows. :).

Om du i ditt paint-liknande-program använder en picturebox som
användaren ritar i.. (ursäkta mitt dåliga språk nu... är rätt
trött :p )... Hur som helst.. vi säger att användaren ritar i Picturebox1.

Då kommer dess "bildyta" att vara PictureBox1.hdc.
Denna "bildyta" innehåller all grafik som Pictureboxen innehåller.
Du kan även redigera denna yta via ett flertal kommandon.

För att demonstrera...

Skriv överst i din kod

Private Declare Function FloodFill Lib "gdi32" _
(ByVal hdc As Long, _
ByVal x As Long, _
ByVal y As Long, _
ByVal crColor As Long) _
As Long

och sedan där du vill infoga "färgfyllningen", t ex efter att användaren har tryckt på en knapp och sedan tryckt någonstans på pictureboxen... låt oss säga att användaren har tryckt
någonstans på pictureboxen:

Private Sub Picture1_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)

       ' Följande kommer att fixa det hur lätt och snabbt som helst.
       ' Funktionen kommer här att fylla området där användaren har klickat med musen (X och Y definierad i i mousedown), med färgen vitt (RGB(x,y,z)).
       FloodFill Picture1.hdc, x, y, RGB(255, 255, 255)

End Sub

Japp, så suveränt är det, med lite api-funktioner. Fråga gärna
om det var något du inte förstod eller om det inte fungerar. :D

// Edit: Ok, jag upptäckte när jag testade detta att det verkade vara lite omständigare än vad jag tidigare trodde. Det verkar som om man måste definiera och skapa en massa sk. brushes och grejer.. :OO , är dock för trött för att tänka så mycket nu :p. Men skall, om jag har tid försöka komma på något imorgon :) (Edit: senare idag ;))

Thompa__85Medlem sedan aug. 2002601 inlägg
#6

hehe okej.. jo märkte att det inte riktigt fungerade... tyvärr

Nexus86Medlem sedan okt. 20022 683 inlägg
#7

Xyzi skrev:

Funktionen kommer här att fylla området där användaren har klickat med musen (X och Y definierad i i mousedown), med färgen vitt (RGB(x,y,z)).
FloodFill Picture1.hdc, x, y, RGB(255, 255, 255)

Det stämmer ju inte riktigt. Om man kollar uppbyggnaden på AllAPI.net så står det

AllAPI.net skrev:

· crFill
Specifies the color of the boundary or of the area to be filled.

Vilket innebär att man skriver i färgen som ska bytas ut och sedan har man gjort en brush som bestämmer färgen som kommer komma dit istället. Färgen som ska bytas ut kan man däremot få reda på med Point. Ex.

FloodFill Picture1.hdc, x, y, Picture1.Point(x, y)

EDIT // Den nya färgen ska skrivas i Picture1.FillColor såg jag nu. :)

EDIT2 // Glömde säga att du måste ha Picture1.FillStyle till 0. Solid. Inte 1 - Transparent. :)

Genererad på 364 ms · cache AV · v20260730165559-full.f96bc7eb