16,472
社区成员
发帖
与我相关
我的任务
分享
#include <stdio.h>
int main() {
int r,g,b,R,G,B;
int n,f,m,i;
while (1) {
while (1) {
printf("input N(1/2/4/8/16/32/64/128,0 exit):");fflush(stdout);
rewind(stdin);
if (1==scanf("%d",&n)) {
if (n==0) return 0;
f=0;
switch (n) {
case 1:case 2:case 4:case 8:case 16:case 32:case 64:case 128:
f=1;
break;
}
if (f) break;
}
}
printf("========%d========\n",n);
m=256/n;
i=0;
for (r=0;r<=n;r++) {
for (g=0;g<=n;g++) {
for (b=0;b<=n;b++) {
R=r*m;if (R>=256) R=255;
G=g*m;if (G>=256) G=255;
B=b*m;if (B>=256) B=255;
printf("%8d (%3d,%3d,%3d)\n",i,R,G,B);
i++;
}
}
}
}
return 0;
}
//input N(1/2/4/8/16/32/64/128,0 exit):7
//input N(1/2/4/8/16/32/64/128,0 exit):1
//========1========
// 0 ( 0, 0, 0)
// 1 ( 0, 0,255)
// 2 ( 0,255, 0)
// 3 ( 0,255,255)
// 4 (255, 0, 0)
// 5 (255, 0,255)
// 6 (255,255, 0)
// 7 (255,255,255)
//input N(1/2/4/8/16/32/64/128,0 exit):2
//========2========
// 0 ( 0, 0, 0)
// 1 ( 0, 0,128)
// 2 ( 0, 0,255)
// 3 ( 0,128, 0)
// 4 ( 0,128,128)
// 5 ( 0,128,255)
// 6 ( 0,255, 0)
// 7 ( 0,255,128)
// 8 ( 0,255,255)
// 9 (128, 0, 0)
// 10 (128, 0,128)
// 11 (128, 0,255)
// 12 (128,128, 0)
// 13 (128,128,128)
// 14 (128,128,255)
// 15 (128,255, 0)
// 16 (128,255,128)
// 17 (128,255,255)
// 18 (255, 0, 0)
// 19 (255, 0,128)
// 20 (255, 0,255)
// 21 (255,128, 0)
// 22 (255,128,128)
// 23 (255,128,255)
// 24 (255,255, 0)
// 25 (255,255,128)
// 26 (255,255,255)
//input N(1/2/4/8/16/32/64/128,0 exit):8
//========8========
// 0 ( 0, 0, 0)
// 1 ( 0, 0, 32)
// 2 ( 0, 0, 64)
// 3 ( 0, 0, 96)
// 4 ( 0, 0,128)
// 5 ( 0, 0,160)
// 6 ( 0, 0,192)
// 7 ( 0, 0,224)
// 8 ( 0, 0,255)
// 9 ( 0, 32, 0)
// 10 ( 0, 32, 32)
// 11 ( 0, 32, 64)
// 12 ( 0, 32, 96)
// 13 ( 0, 32,128)
// 14 ( 0, 32,160)
// 15 ( 0, 32,192)
// 16 ( 0, 32,224)
// 17 ( 0, 32,255)
//... ...
// 720 (255,255, 0)
// 721 (255,255, 32)
// 722 (255,255, 64)
// 723 (255,255, 96)
// 724 (255,255,128)
// 725 (255,255,160)
// 726 (255,255,192)
// 727 (255,255,224)
// 728 (255,255,255)
//input N(1/2/4/8/16/32/64/128,0 exit):0
//
#include <stdio.h>
int main() {
int r,g,b,R,G,B;
int n,f,m,i;
while (1) {
while (1) {
printf("input N(1/2/4/8/16/32/64/128,0 exit):");fflush(stdout);
rewind(stdin);
if (1==scanf("%d",&n)) {
if (n==0) return 0;
f=0;
switch (n) {
case 1:case 2:case 4:case 8:case 16:case 32:case 64:case 128:
f=1;
break;
}
if (f) break;
}
}
printf("========%d========\n",n);
m=256/n;
i=0;
for (r=0;r<=n;r++) {
for (g=0;g<=n;g++) {
for (b=0;b<=n;b++) {
R=r*m;if (R>=256) R=255;
G=g*m;if (G>=256) G=255;
B=b*m;if (B>=256) B=255;
printf("%8d (%3d,%3d,%3d)\n",i,R,G,B);
}
}
}
}
return 0;
}
//input N(1/2/4/8/16/32/64/128,0 exit):7
//input N(1/2/4/8/16/32/64/128,0 exit):1
//========1========
// 0 ( 0, 0, 0)
// 0 ( 0, 0,255)
// 0 ( 0,255, 0)
// 0 ( 0,255,255)
// 0 (255, 0, 0)
// 0 (255, 0,255)
// 0 (255,255, 0)
// 0 (255,255,255)
//input N(1/2/4/8/16/32/64/128,0 exit):2
//========2========
// 0 ( 0, 0, 0)
// 0 ( 0, 0,128)
// 0 ( 0, 0,255)
// 0 ( 0,128, 0)
// 0 ( 0,128,128)
// 0 ( 0,128,255)
// 0 ( 0,255, 0)
// 0 ( 0,255,128)
// 0 ( 0,255,255)
// 0 (128, 0, 0)
// 0 (128, 0,128)
// 0 (128, 0,255)
// 0 (128,128, 0)
// 0 (128,128,128)
// 0 (128,128,255)
// 0 (128,255, 0)
// 0 (128,255,128)
// 0 (128,255,255)
// 0 (255, 0, 0)
// 0 (255, 0,128)
// 0 (255, 0,255)
// 0 (255,128, 0)
// 0 (255,128,128)
// 0 (255,128,255)
// 0 (255,255, 0)
// 0 (255,255,128)
// 0 (255,255,255)
//input N(1/2/4/8/16/32/64/128,0 exit):8
//========8========
// 0 ( 0, 0, 0)
// 0 ( 0, 0, 32)
// 0 ( 0, 0, 64)
// 0 ( 0, 0, 96)
// 0 ( 0, 0,128)
// 0 ( 0, 0,160)
// 0 ( 0, 0,192)
// 0 ( 0, 0,224)
// 0 ( 0, 0,255)
// 0 ( 0, 32, 0)
// 0 ( 0, 32, 32)
// 0 ( 0, 32, 64)
// 0 ( 0, 32, 96)
// 0 ( 0, 32,128)
// 0 ( 0, 32,160)
// 0 ( 0, 32,192)
// 0 ( 0, 32,224)
// 0 ( 0, 32,255)
//... ...
// 0 (255,255, 0)
// 0 (255,255, 32)
// 0 (255,255, 64)
// 0 (255,255, 96)
// 0 (255,255,128)
// 0 (255,255,160)
// 0 (255,255,192)
// 0 (255,255,224)
// 0 (255,255,255)
//input N(1/2/4/8/16/32/64/128,0 exit):0
//
void CheckColor(DWORD dwColor)
{
BYTE r,g,b;
COLORREF ColorRGB = RGB(0,0,0);
for(r=0; r<=255; r++)
{
if (r % dwColor == 0)
{
for (g=0; g<=255; g++)
{
if (g % dwColor == 0)
{
for(b=0; b<=255; b++)
{
if(b % dwColor == 0)
ColorRGB = RGB(r,g,b);//这里就是满足RGB都是dwColor倍数的颜色
//做你想做的操作,把ColorRGB存起来或者输出或者。。。
}
}
}
}
}
int CCRgbDlg::GetClr(int nData,COLORREF cr)
{
if (RGB(nData,0,0) == cr)
{
return 0;
}
else if (RGB(0,nData,0) == cr)
{
return 1;
}
else if (RGB(0,0,nData) == cr)
{
return 2;
}
else if (RGB(nData,nData,0) == cr)
{
return 3;
}
else if (RGB(nData,0,nData) == cr)
{
return 4;
}
else if (RGB(0,nData,nData) == cr)
{
return 5;
}
else if (RGB(nData,nData,nData) == cr)
{
return 6;
}
return -1;
}
对比判断并返回值。。。
void ColorTrace(BYTE bIn)
{
for(int i=1; bIn*i<=255; i++)
{
BYTE bVal = (BYTE)(bIn*i);
TRACE(_T("%u=[%06X %06X %06X %06X %06X %06X]\n"),
bVal,
RGB(bVal, 0, 0),
RGB( 0, bVal, 0),
RGB( 0, 0, bVal),
RGB(bVal, bVal, 0),
RGB(bVal, 0, bVal),
RGB( 0, bVal, bVal),
RGB(bVal, bVal, bVal)
);
}
}
void CDlg1Dlg::OnButton1()
{
ColorTrace(32);
}
//调试输出
32=[000020 002000 200000 002020 200020 202000]
64=[000040 004000 400000 004040 400040 404000]
96=[000060 006000 600000 006060 600060 606000]
128=[000080 008000 800000 008080 800080 808000]
160=[0000A0 00A000 A00000 00A0A0 A000A0 A0A000]
192=[0000C0 00C000 C00000 00C0C0 C000C0 C0C000]
224=[0000E0 00E000 E00000 00E0E0 E000E0 E0E000]
void main
{
COLORREF r,g,b;
RGB(r,g,b);//在这里引入你要判断的RGB值
if(32 == r && 32==g && 32==b)
{
if(r%32==0 && g%32==0 && b%32==0)
}
}
#define RGB(r,g,b) ((COLORREF)(((BYTE)(r)|((WORD)((BYTE)(g))<<8))|(((DWORD)(BYTE)(b))<<16)))