zoukankan      html  css  js  c++  java
  • Delphi开发ASP COM组件显示图片

    Delphi单元如下:
    unit CINNO.Debug;

    {$WARN SYMBOL_PLATFORM OFF}

    interface

    uses
      ComObj, ActiveX, Classes, Variants, VarConv, AspTlb, CINNO_TLB, Windows, StdVcl;

    type
      TDebug = class(TASPMTSObject, IDebug)
      protected
        procedure Debug; safecall;
      end;

    implementation

    uses ComServ;

    procedure TDebug.Debug;
    var
      Bitmap:TBitmap;
      Jpeg:TJPEGImage;
      bWidth,bHeight:Integer;
      MS:TMemoryStream;
      DataPointer:PByte;
      OutputStream:Variant;
      OutputStreamSize:Cardinal;
      Counter:Integer;
    begin
      Response.ContentType:='image/jpeg';
      Response.Flush;
      //创建图片
      bWidth:=Screen.Width;
      bHeight:=Screen.Height;
      Bitmap:=TBitmap.Create;
      Bitmap.Width:=bWidth;
      Bitmap.Height:=bHeight;
      Bitmap.PixelFormat:=pf32bit;
      //开始绘图
      Bitmap.Canvas.Pen.Color:=clRed;
      Bitmap.Canvas.Pen.Width:=3;
      Bitmap.Canvas.Brush.Color:=clBlack;
      Bitmap.Canvas.FillRect(Rect(0,0,bWidth-1,bHeight-1));
      Bitmap.Canvas.Pen.Color:=clMoneyGreen;
      Bitmap.Canvas.DrawFocusRect(Rect(0,0,bWidth-1,bHeight-1));
      Bitmap.Canvas.MoveTo(0,0);
      Bitmap.Canvas.Pen.Color:=clCream;
      Bitmap.Canvas.LineTo(bWidth-1,bHeight-1);
      Bitmap.Canvas.Font.Color:=clRed;
      Bitmap.Canvas.Font.Size:=32;
      Bitmap.Canvas.TextOut(800,600,DateTimeToStr(Now()));
      Bitmap.Canvas.Pen.Color:=clWhite;
      Bitmap.Canvas.Pen.Width:=5;
      Bitmap.Canvas.Arc(100,100,200,200,500,500,800,800);
      //转为Jpeg
      Jpeg:=TJPEGImage.Create;
      Jpeg.CompressionQuality:=90;
      Jpeg.Assign(Bitmap);
      //拷贝到安全数组
      MS:=TMemoryStream.Create;
      Jpeg.SaveToStream(MS);
      DataPointer:=MS.Memory;
      OutputStreamSize:=MS.Size;
      OutputStream:=VarArrayCreate([1,OutputStreamSize],varByte);
      for Counter := 1 to OutputStreamSize do
        begin
          VarArrayPut(OutputStream,Byte(DataPointer^),[Counter]);
          Inc(DataPointer);
        end;
      //输出图片
      Response.BinaryWrite(OutputStream);
      Bitmap.Free;
      Jpeg.Free;
      MS.Free;
    end;

    initialization
      TAutoObjectFactory.Create(ComServer, TDebug, Class_Debug,
        ciMultiInstance, tmApartment);
    end.

    ASP代码如下:
    <%@Language="VBS" CodePage="936"%>
    <%
    Option Explicit
    Dim System,Debug
    Set Debug=CreateObject("CINNO.Debug")
    Debug.Debug
    %>

  • 相关阅读:
    蝴蝶自在——《萍踪侠影》
    学习OpenCV——关于三通道的CvMat的求和问题
    MFC中的OnTimer和SetTimer
    慎重选择博士后(或博士生)导师
    MFC界面的完善
    MFC CSplitterWnd的用法
    断言(ASSERT)的用法
    OpenCV中lib的添加
    【转】数据结构之位图
    【转】关于windows server 2003不能共享问题
  • 原文地址:https://www.cnblogs.com/MaxWoods/p/943712.html
Copyright © 2011-2022 走看看