保存的图片直接查看是(图片格式为EMF,JPEG也是如此)导入coreldraw X4后变成了
实现的代码如下:
unit code128;interfaceuses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, Buttons, ExtCtrls,Jpeg, ExtDlgs;type
  TForm1 = class(TForm)
    Button1: TButton;
    Image1: TImage;
    SavePictureDialog1: TSavePictureDialog;
    Button2: TButton;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
  
  private
    { Private declarations }
  public
    { Public declarations }
  end;var
  Form1: TForm1;
implementation{$R *.dfm}
uses
 Clipbrd;
procedure drawline(x1,y1,x2,y2,penwidth:integer);
begin
   Form1.Image1.Canvas.Pen.Width :=penwidth;
   Form1.Image1.Canvas.MoveTo(x1,y1);
   Form1.Image1.Canvas.LineTo(x2,y2);
end;//画条码(条码内容,x0,y0: 起始点,height: 条码高度, penwidth: 条码线宽)
procedure drawcode128B1(barcode:string;x0,y0,height,penwidth:integer);
var
 i,j,x,y1,y2:integer;
 code:Char;
 printcode:string;
begin
 printcode:=barcode;
  Form1.Image1.Canvas.pen.Width :=1;
  Form1.Image1.Canvas.Pen.Color :=clBlack;
//  printer.Canvas.Brush.Color:=clBlack;
   x:=x0;   //50
  for i:=1 to length(printcode) do
  begin
    code:=printcode[i];
    if code='1' then
    begin
      y1:=y0;
      y2:=y0+height;
      //printer.Canvas.Rectangle(x1,y1,x2,y2);
      for j:=0 to penwidth-1 do
      begin
      drawline(x+j,y1,x+j,y2,1);      end;
    end;
     x:=x+penwidth;
  end;
end;//画线:
procedure TForm1.Button1Click(Sender: TObject);
var
barcode:String;
{jp:TJPEGImage;
AFormat:Word;
AData:Cardinal;
APalette:HPALETTE; }
begin
barcode:='110100001001110010110011011100100110011100101110110111010011101100100111011001110110111011101001100110111001001100011101011';
drawcode128B1(barcode,30,40,50,2);
//Form1.Image1.Picture.Bitmap.
{Form1.Image1.Picture.SaveToClipboardFormat(AFormat,AData,APalette);
//GetFormImage.SaveToClipboardFormat(AFormat, AData, APalette);
Clipboard.SetAsHandle(AFormat, AData);
Form1.Image1.Picture.SaveToFile('d:\zhy.jpg');
SavePictureDialog1.Execute;
Form1.Image1.Picture.SaveToFile(SavePictureDialog1.FileName);
jp := TJPEGImage.Create;
  try
    with jp do
    begin
      jp.CompressionQuality := 2;
      jp.Compress ;
      Assign(Form1.Image1.Picture.Bitmap);
      SaveToFile('D:\zhy2.jpg');
    end;
  finally
    jp.Free;
    end;}
end;procedure TForm1.Button2Click(Sender: TObject);
var
jp:TJPEGImage;
AFormat:Word;
AData:Cardinal;
APalette:HPALETTE;
begin
Form1.Image1.Picture.SaveToClipboardFormat(AFormat,AData,APalette);
//GetFormImage.SaveToClipboardFormat(AFormat, AData, APalette);
Clipboard.SetAsHandle(AFormat, AData);
Form1.Image1.Picture.SaveToFile('d:\zhy33.bmp');
SavePictureDialog1.Execute;
Form1.Image1.Picture.SaveToFile(SavePictureDialog1.FileName);
jp := TJPEGImage.Create;
  try
    with jp do
    begin
      jp.CompressionQuality := 2;
      jp.Compress ;
      Assign(Form1.Image1.Picture.Bitmap);
      SaveToFile('D:\zhy2.jpg');
    end;
  finally
    jp.Free;
    end;
end;end.这是什么原因造成的,如何解决?剪切板直接剪切过去的也是这样的效果。