| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1879 人关注过本帖
标题:为什么颜色值还可以有负值,什么情况?
只看楼主 加入收藏
yuma
Rank: 12Rank: 12Rank: 12
来 自:银河系
等 级:贵宾
威 望:37
帖 子:1934
专家分:3012
注 册:2009-12-22
结帖率:89.13%
收藏
 问题点数:0 回复次数:15 
为什么颜色值还可以有负值,什么情况?
图片附件: 游客没有浏览图片的权限,请 登录注册
搜索更多相关主题的帖子: 颜色值 负值 
2023-04-25 19:59
吹水佬
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:451
帖 子:10607
专家分:43186
注 册:2014-5-20
收藏
得分:0 
Point返回的是24位数,有符号显示-1(0xFFFFFF)应该是白色(RGB:255,255,255)
2023-04-26 07:57
yuma
Rank: 12Rank: 12Rank: 12
来 自:银河系
等 级:贵宾
威 望:37
帖 子:1934
专家分:3012
注 册: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: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:451
帖 子:10607
专家分:43186
注 册: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: 12Rank: 12Rank: 12
来 自:银河系
等 级:贵宾
威 望:37
帖 子:1934
专家分:3012
注 册:2009-12-22
收藏
得分:0 
回复 4楼 吹水佬
当se=-1时,se /65536结果如下:

图片附件: 游客没有浏览图片的权限,请 登录注册

心生万象,万象皆程序!
本人计算机知识网:http://bbs.为防伸手党,本站已停止会员注册。
2023-04-30 20:53
吹水佬
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:451
帖 子:10607
专家分:43186
注 册:2014-5-20
收藏
得分:0 
回复 5楼 yuma
变成有符号整数运算了
或者这样直接观测一下:
HEX(Picture1.Point(I, J))
2023-05-01 06:43
yuma
Rank: 12Rank: 12Rank: 12
来 自:银河系
等 级:贵宾
威 望:37
帖 子:1934
专家分:3012
注 册: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: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:451
帖 子:10607
专家分:43186
注 册: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: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:451
帖 子:10607
专家分:43186
注 册:2014-5-20
收藏
得分:0 
测试一下,就如2楼说的。
图片附件: 游客没有浏览图片的权限,请 登录注册
2023-05-03 09:54
yuma
Rank: 12Rank: 12Rank: 12
来 自:银河系
等 级:贵宾
威 望:37
帖 子:1934
专家分:3012
注 册:2009-12-22
收藏
得分:0 
颜色值为-1并不是指代任何一种颜色,因为在颜色编码系统中,负数通常不是有效的颜色值。因此,无法将颜色值为-1与任何颜色相关联。而白色的颜色值一定是65535,而不是-1。

心生万象,万象皆程序!
本人计算机知识网:http://bbs.为防伸手党,本站已停止会员注册。
2023-05-20 18:57
快速回复:为什么颜色值还可以有负值,什么情况?
数据加载中...
 
   



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

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