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
6 svar · 266 visningar · startad av Thompa__85
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
rymdknark skrev:
Hmm okej.. fattade inte mycket av det där tyvärr :/
kan jag inte använda mig av Fillcolor i detta läge?
Men får iallafall itne det att funka :/
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 ;))
hehe okej.. jo märkte att det inte riktigt fungerade... tyvärr
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. :)