【发布时间】:2020-02-29 07:01:53
【问题描述】:
为了开发过滤器程序,我必须实现将 RGBTRIPLE 值作为整数、修改它们并将这些值作为 RGBTRIPLE 重新传递的功能。具体来说,typedef struct RGBTRIPLE 在http://msdn.microsoft.com/en-us/library/cc230309.aspx 中定义为
typedef struct tagRGBTRIPLE {
BYTE rgbtBlue;
BYTE rgbtGreen;
BYTE rgbtRed;
} RGBTRIPLE;
我想不通的是如何将三种不同颜色的这些强度转换为整数,以便我可以操纵它们。我尝试做类似的事情
RGBTRIPLE tmpimage[3][3];
int blue = tmpimage[0][0].rgbtBlue;
图像的每个像素已经分配了从实际位图中读取的值。
但是,每当我运行程序时,都会发生 .rgbtColor 到整数的转换不起作用。我通过在将 RGBTRIPLE 数据类型变量中的 .rgbtColor 值分配给它之后尝试打印一个整数变量来解决这个问题。它不是打印一个数字,而是打印一长串任意数字。我很高兴学习一种方法,可以将此类 rgbtColor 值转换为整数。
【问题讨论】:
-
int blue = tmpimage[0][0].rgbtBlue 很好。结论是没有像应有的那样将值分配给结构。或者可能 RGBTRIPLE 被定义为某处的指针,而蓝色正在检索指针数据而不是值。在调试器上单步执行或共享用于定义数组并将值分配给结构成员的代码。
-
请注意,在分配给较小的类型之前,这些值会在计算过程中自动提升为
int。所以例如(255 * 3) / 4不会因为中间值大于BYTE而溢出。 -
@weadhervane 我在问题中看不到这样的公式。这个问题需要实际的代码、清晰度等。
-
显示不起作用的实际代码。您的问题目前无法回答,应该关闭
标签: c