|
|
导航: |
论坛 -> DELPHI技术
斑竹:liumazi,sephil |
|
作者: |
glwang (glwang) |
★☆☆☆☆ |
-
|
盒子活跃会员 |
|
2019/8/24 17:29:08 |
标题: |
请问这句C#代码啥意思啊?如何翻译成Delphi? |
浏览:1458 |
|
加入我的收藏 |
楼主: |
Bitmap bmp; if (bmp.GetPixel(i, j).ToArgb() < -8200000) { // } if (bmp.GetPixel(i, j).ToArgb() < -1) { // } 请问为啥bmp.GetPixel(i, j).ToArgb()会有负数呢? 我翻译成: BMP.Canvas.Pixels[I,J];得到的都是正数,对不对啊?
----------------------------------------------
|
作者: |
|
2019/8/25 9:11:07 |
1楼: |
ToArgb你没看到吗?
----------------------------------------------
-delphi新资讯站 http://www.delphigear.cn
|
作者: |
glwang (glwang) |
★☆☆☆☆ |
-
|
盒子活跃会员 |
|
2019/8/25 18:47:29 |
2楼: |
1楼看清我的问题了吗?为啥bmp.GetPixel(i, j).ToArgb()会有负数呢?
----------------------------------------------
|
作者: |
|
2019/8/25 22:08:13 |
3楼: |
Vcl.Graphics.ColorToRGB 就是少了Alpha,那是个Int32。。。所以可能有负数。。 如果你用 fmx,那就可以带alpha了
----------------------------------------------
-
|
作者: |
tiez (骑牛夜旅) |
★☆☆☆☆ |
-
|
普通会员 |
|
2019/8/26 9:45:44 |
4楼: |
一个像素ARGB或RGB都存四个字节,ARGB第一个字节是alpha,只要有表现成整型不就是负的吗?
----------------------------------------------
-
|
作者: |
glwang (glwang) |
★☆☆☆☆ |
-
|
盒子活跃会员 |
|
2019/8/26 23:20:15 |
5楼: |
啥颜色生成负数呢?谁有取色是负数的图片发一下
----------------------------------------------
|
作者: |
|
2019/8/27 0:00:45 |
6楼: |
最高位是1的数值,用有符号变量类型表示的话,就是负数
如果是RGB,只占用3个字节,高8位均为0,就没有负数
如果是ARGB,占用4个字节,高8位表示A通道的话,A取值大于等于128时,即为负数
也就是当一个Cardinal大于等于$80000000时候,如用用Integer表示的话,即为负数
$00000000为0 $00000001为1 ... $7FFFFFFE为+2147483646 $7FFFFFFF为+2147483647(MaxInt/High(Integer)) $80000000为-2147483648(Low(Integer)) $80000001为-2147483647 $80000002为-2147483646 ... $FFFFFFFE为-2 $FFFFFFFF为-1
符号位,原码,反码,补码,了解一下
----------------------------------------------
FFmpeg for Delphi http://www.CCAVC.com http://www.DelphiFFmpeg.com
|
作者: |
|
2019/8/27 0:10:31 |
7楼: |
带Alpha通道的颜色,不是普通的颜色
你用调色板取到的颜色是不带Alpha的
然而,这只是用32位(4个字节)来表示RGB
一个正常的数值类型变量长度要么是8位的,要么是16位的,要么是32位的,要么是64位的。。。
如果有个畸形数值类型变量长度是24位的,且为有符号类型,那RGB就会有负值
不过好像没有哪个编译器要搞个24位的数值类型吧
----------------------------------------------
FFmpeg for Delphi http://www.CCAVC.com http://www.DelphiFFmpeg.com
|
作者: |
|
2019/8/27 8:32:43 |
8楼: |
delphi里的这种结构体能明白么? 能明白就能明白你的问题 type TMessage = packed record Msg: Cardinal; case Integer of 0: ( WParam: Longint; LParam: Longint; Result: Longint); 1: ( WParamLo: Word; WParamHi: Word; LParamLo: Word; LParamHi: Word; ResultLo: Word; ResultHi: Word); end;
----------------------------------------------
-
|
作者: |
|
2019/8/27 9:32:27 |
9楼: |
Graphics单元里有以下定义,可以看出,系统颜色用整数表示就是负值。 Type TColor = -$7FFFFFFF-1..$7FFFFFFF; const clSystemColor = $FF000000; clScrollBar = TColor(clSystemColor or COLOR_SCROLLBAR); ...
----------------------------------------------
-广袤璀璨的银河,永无止境的梦想(梦无止境游银河) 博客挂了……
|
|