私はMS Paintのカラーピッカーに似たカラーピッカーを作成しようとしています。 残念ながら、私は飽和のアルゴリズムを理解することはできません。 飽和を実装しようとすると、正しく飽和しません。 私は、アルゴリズムの飽和効果のいくつかの理解を欠落している必要があります。虹色のピッカーが正しく飽和しないために、何が欠けている/間違っていますか?
これは私の現在のアルゴリズムが作成するものです。 Y軸上で飽和エフェクトを実行しようとするたびに、最初の行の後のすべてが完全に赤または黒になります。
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);
}
}
}
レインボーバーのアルゴリズムを簡略化しました。私が飽和しようとしたとき、それはその場所全体にグレーの渦を作りました、おっと! – uFootball8