Sto provando a creare un Color Picker simile a quello di MS Paint. Sfortunatamente, non riesco a capire l'algoritmo per la saturazione. Ogni volta che cerco di implementare la saturazione, semplicemente non si saturerà correttamente. Mi manca la comprensione dell'effetto di saturazione nell'algoritmo.Cosa mi sfugge/faccio male per il mio arcobaleno Color Picker per non saturare correttamente?
Questo è ciò che crea il mio algoritmo corrente. Ogni volta che provo a eseguire un effetto saturo che scende sull'asse Y, rende tutto appena dopo la prima riga completamente rosso o nero.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using SFML;
using SFML.Graphics;
using SFML.Window;
namespace Source
{
public ColorWheel()
{
for (int y = 0; y < 255; y++)
{
for (int z = 0; z < 6; z++)
{
for (int x = 0; x < 255; x++)
{
uint ux = (uint)x;
uint uy = (uint)y;
uint uz = (uint)z;
ux = ux + (uz * 255);
image.SetPixel(ux, uy, color);
//Red 255 - Green 0-254
if (z == 0)
{
color.G += 1;
}
//Green 255 - Red 255-0
else if (z == 1)
{
color.R -= 1;
}
//Green 255 - Blue 0-255
else if (z == 2)
{
color.B += 1;
}
//Blue 255 - Green 255-0
else if (z == 3)
{
color.G -= 1;
}
//Blue 255 - Red 0-255
else if (z == 4)
{
color.R += 1;
}
//Red 255 - Blue 255-0
else if (z == 5)
{
color.B -= 1;
}
Texture texture = new Texture(image);
sprite.Texture = texture;
}
public void Update(double dt)
{
}
public void Render(RenderWindow rWindow)
{
rWindow.Draw(sprite);
}
}
}
Ho semplificato l'algoritmo per la barra arcobaleno. Quando ho provato a saturare, ha fatto turbinii grigi dappertutto, oops! – uFootball8