标题:为什么颜色值还可以有负值,什么情况?
只看楼主
yuma
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:银河系
等 级:贵宾
威 望:33
帖 子:1883
专家分:2904
注 册:2009-12-22
结帖率:89.13%
 问题点数:0 回复次数:8 
为什么颜色值还可以有负值,什么情况?
搜索更多相关主题的帖子: 颜色值 负值 
2023-04-25 19:59
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:432
帖 子:10064
专家分:41463
注 册:2014-5-20
得分:0 
Point返回的是24位数,有符号显示-1(0xFFFFFF)应该是白色(RGB:255,255,255)
2023-04-26 07:57
yuma
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:银河系
等 级:贵宾
威 望:33
帖 子:1883
专家分:2904
注 册:2009-12-22
得分:0 
AI说,-1表示为透明色。

在计算机编程中,颜色值通常表示为一个整数。对于32位颜色,这个整数可以表示为一个包含四个8位组件(RGBA)的值:红色(R),绿色(G),蓝色(B),和透明度(A)。每个组件的取值范围是0到255。然后,这四个组件的值被组合成一个32位整数。

颜色值可以等于-1,是因为在某些情况下,-1具有特殊的含义。例如,在某些编程语言和库中,-1可能表示透明颜色或未定义的颜色。这里的-1实际上是一个32位整数,它的二进制表示形式为全1(11111111 11111111 11111111 11111111),即RGBA四个组件的值都是255,表示白色且完全透明。

当然,这种表示方法和含义可能因编程语言、库或框架而异。在某些情况下,颜色值可能需要进行特定的处理或转换,以便正确地表示和使用。

心生万象,万象皆程序!
本人计算机知识网:http://bbs.为防伸手党,本站已停止会员注册。
2023-04-30 17:56
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:432
帖 子:10064
专家分:41463
注 册:2014-5-20
得分:0 
以下是引用yuma在2023-4-30 17:56:29的发言:

AI说,-1表示为透明色。

在计算机编程中,颜色值通常表示为一个整数。对于32位颜色,这个整数可以表示为一个包含四个8位组件(RGBA)的值:红色(R),绿色(G),蓝色(B),和透明度(A)。每个组件的取值范围是0到255。然后,这四个组件的值被组合成一个32位整数。

颜色值可以等于-1,是因为在某些情况下,-1具有特殊的含义。例如,在某些编程语言和库中,-1可能表示透明颜色或未定义的颜色。这里的-1实际上是一个32位整数,它的二进制表示形式为全1(11111111 11111111 11111111 11111111),即RGBA四个组件的值都是255,表示白色且完全透明。

当然,这种表示方法和含义可能因编程语言、库或框架而异。在某些情况下,颜色值可能需要进行特定的处理或转换,以便正确地表示和使用。

这说法是针对32位像素的颜色定义
你提的问题也许不一定是AI说的一回事
可以这样试试:
看看 Se/65536 的值是什么。如果是0xFFFF,那Point方法返回的是32位颜色值;如果是0xFF,那Point方法返回的是24位颜色值。
2023-04-30 19:51
yuma
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:银河系
等 级:贵宾
威 望:33
帖 子:1883
专家分:2904
注 册:2009-12-22
得分:0 
回复 4楼 吹水佬
当se=-1时,se /65536结果如下:


心生万象,万象皆程序!
本人计算机知识网:http://bbs.为防伸手党,本站已停止会员注册。
2023-04-30 20:53
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:432
帖 子:10064
专家分:41463
注 册:2014-5-20
得分:0 
回复 5楼 yuma
变成有符号整数运算了
或者这样直接观测一下:
HEX(Picture1.Point(I, J))
2023-05-01 06:43
yuma
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:银河系
等 级:贵宾
威 望:33
帖 子:1883
专家分:2904
注 册:2009-12-22
得分:0 
看看 Se/65536 的值是什么。如果是0xFFFF,那Point方法返回的是32位颜色值;如果是0xFF,那Point方法返回的是24位颜色值。

当se=-1时:
hex(se /65536) = 0

hex(se)=FFFFFFF

心生万象,万象皆程序!
本人计算机知识网:http://bbs.为防伸手党,本站已停止会员注册。
2023-05-01 17:58
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:432
帖 子:10064
专家分:41463
注 册:2014-5-20
得分:0 
以下是引用yuma在2023-5-1 17:58:16的发言:

看看 Se/65536 的值是什么。如果是0xFFFF,那Point方法返回的是32位颜色值;如果是0xFF,那Point方法返回的是24位颜色值。

当se=-1时:
hex(se /65536) = 0

hex(se)=FFFFFFF

不能用 se/65536 运算,VB好像没有32位无符号整数的数据类型,不能声明无符号整数类型变量。
最好直接用 HEX(Picture1.Point(I, J)) 观测,不要通过“中介”。

另:hex(se)=FFFFFFF 这是28位,好像没有28位像素的说法,是不是多了一个“F”,还是少了一个“F”。

[此贴子已经被作者于2023-5-1 18:12编辑过]

2023-05-01 18:04
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:432
帖 子:10064
专家分:41463
注 册:2014-5-20
得分:0 
测试一下,就如2楼说的。
2023-05-03 09:54



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-512042-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.054991 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved