求BMP任意图传为256灰度位图的C++Builder算法(15分)

  • 主题发起人 主题发起人 foison
  • 开始时间 开始时间
F

foison

Unregistered / Unconfirmed
GUEST, unregistred user!
我只有15分了.
求BMP任意图传为256灰度位图的C++Builder算法
请高手给我一段源码.(我对C++Builder不熟悉)
 
多谢。
其实这个问题也很简单,大把的Delphi源码可以用(C++ Builder可以直接编译大多数Object Pascal源程序):
看看这个有没有启发:
procedure ImageListDrawDisabled(Images: TImageList;
Canvas: TCanvas;
X, Y, Index: Integer;
HighlightColor, GrayColor: TColor;
DrawHighlight: Boolean);
var
Bmp: TBitmap;
SaveColor: TColor;
begin
SaveColor := Canvas.Brush.Color;
Bmp := TBitmap.Create;
try
Bmp.Width := Images.Width;
Bmp.Height := Images.Height;
with Bmp.Canvasdo
begin
Brush.Color := clWhite;
FillRect(Rect(0, 0, Images.Width, Images.Height));
ImageList_Draw(Images.Handle, Index, Handle, 0, 0, ILD_MASK);
end;
Bmp.Monochrome := True;
if DrawHighlight then
begin
Canvas.Brush.Color := HighlightColor;
SetTextColor(Canvas.Handle, clWhite);
SetBkColor(Canvas.Handle, clBlack);
BitBlt(Canvas.Handle, X + 1, Y + 1, Images.Width,
Images.Height, Bmp.Canvas.Handle, 0, 0, ROP_DSPDxax);
end;
Canvas.Brush.Color := GrayColor;
SetTextColor(Canvas.Handle, clWhite);
SetBkColor(Canvas.Handle, clBlack);
BitBlt(Canvas.Handle, X, Y, Images.Width,
Images.Height, Bmp.Canvas.Handle, 0, 0, ROP_DSPDxax);
finally
Bmp.Free;
Canvas.Brush.Color := SaveColor;
end;
end;

 
C++ Builder可以直接编译大多数Object Pascal源程序?
怎么实现呢?
今天遇到高手了.:)
好想与你交个朋友!
请留下联系方式好吗?
 
我的QQ是13823062
email:b_123@tom.com
 
接受答案了.
 
直接在工程中加入.pas文件,先用Alt+F9对Pas文件单独编译,完了便会生成相应的hpp文件。include这个hpp,里面有BCB自动产生的Object pascal的接口描述,如对象,函数、全局变量等。
其实Borland让BCB能够编译Object Pascal也是没办法的办法。当年他的Delphi十分火爆,但是在C++编译工具却远没有当年TurboC/Borland C的辉煌,为了快速推出C++的RAD工具,他们让BCB能够编译使用Delphi的VCL,你可以看看有几个BCB的控件是用C++写的?
 
前辈请您关注此贴!
http://www.delphibbs.com/delphibbs/dispq.asp?lid=2557911
 
后退
顶部