DELPHI盒子
!实时搜索: 盒子论坛 | 注册用户 | 修改信息 | 退出
检举帖 | 全文检索 | 关闭广告 | 捐赠
技术论坛
 用户名
 密  码
自动登陆(30天有效)
忘了密码
≡技术区≡
DELPHI技术
lazarus/fpc/Free Pascal
移动应用开发
Web应用开发
数据库专区
报表专区
网络通讯
开源项目
论坛精华贴
≡发布区≡
发布代码
发布控件
文档资料
经典工具
≡事务区≡
网站意见
盒子之家
招聘应聘
信息交换
论坛信息
最新加入: webb123
今日帖子: 3
在线用户: 2
导航: 论坛 -> 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];得到的都是正数,对不对啊?
----------------------------------------------
作者:
男 homejun (homejun) ★☆☆☆☆ -
盒子活跃会员
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()会有负数呢?
----------------------------------------------
作者:
男 crystalmoon (crystalmoon) ★☆☆☆☆ -
盒子活跃会员
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楼: 啥颜色生成负数呢?谁有取色是负数的图片发一下
----------------------------------------------
作者:
男 codecoolie (CodeCoolie) ★☆☆☆☆ -
普通会员
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
作者:
男 codecoolie (CodeCoolie) ★☆☆☆☆ -
普通会员
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
作者:
男 wk_knife (wk_knife) ★☆☆☆☆ -
盒子活跃会员
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;
----------------------------------------------
-
作者:
男 iamdream (银河恒久远,梦想无止境!) ★☆☆☆☆ -
大贡献会员
2019/8/27 9:32:27
9楼: Graphics单元里有以下定义,可以看出,系统颜色用整数表示就是负值。
Type
  TColor = -$7FFFFFFF-1..$7FFFFFFF;
const
  clSystemColor = $FF000000;
  clScrollBar = TColor(clSystemColor or COLOR_SCROLLBAR);
  ...
----------------------------------------------
-广袤璀璨的银河,永无止境的梦想(梦无止境游银河) 博客挂了……
信息
登陆以后才能回复
Copyright © 2CCC.Com 盒子论坛 v3.0.1 版权所有 页面执行72.26563毫秒 RSS