抛砖引玉之图像不失真缩小 ( 积分: 100 )

  • 主题发起人 主题发起人 yangyih007
  • 开始时间 开始时间
Y

yangyih007

Unregistered / Unconfirmed
GUEST, unregistred user!
抛砖引玉之图像不失真缩小

为了图像不失真缩小的问题我伤透了脑筋,一直没有圆满解决,所以现在要向DFW的高手求助了。为此我提供一段代码。需要使用strecth控件,这个控件能够实现一部分图像不失真缩小,但是对于一些图像的黑色部分处理不好,很影响显示效果,折中解决方法是将这种图片格式变为jpg.PixelFormat:=jf8bit;但这是牺牲图像质量的方法,图像变得粗糙。我认为是strecth的计算不够精确才会出现这样的问题,我没有能力解决。如果有高手是否能够为我修正一下!

代码:因为Delphi只是只是支持Jpeg图片1/2,1/4,1/8的不失真缩小,所以我首先按照这种方式缩小图像,如果图像大于需要显示的尺寸,就要计算出需要缩小的比例,用SmoothResize缩小,然后bmp.Canvas.CopyRect的方法复制图像(因为Strecth方式缩小的图像会重叠在一起)

procedure mstobmpa(ms:tmemorystream;ext,backname:string;smooth:boolean;con:tcontrol
;img:timage;wall:boolean);
var bmp,bmp3:tbitmap;
jpg:tjpegimage;
w,h,x,y,xa,ya,i:integer;
cs:real;
begin
bmp:=tbitmap.Create;
jpg:=tjpegimage.Create;
ext:=ansilowercase(ext);
if ext='.jpg' then
jpg.LoadFromStream(ms) else begin
bmp.LoadFromStream(ms);
jpg.Assign(bmp);
jpg.Compress;
end;

if smooth then
jpg.PixelFormat:=jf24bit else
jpg.PixelFormat:=jf8bit;

if not wall then begin
x:=con.Width ;
y:=con.Height ;
end else begin
x:=GetSystemMetrics(SM_CXSCREEN);
y:=GetSystemMetrics(SM_CySCREEN);

if (jpg.Width>x)or(jpg.Height >y)then begin
x:=con.Width;
y:=con.Height;
end;
end;




xa:=round(jpg.Width/x);
ya:=round(jpg.Height/y);
if xa>ya then i:=xa else i:=ya;
case i of
1:jpg.Scale:=jsFullSize;
2,3:jpg.Scale:=jshalf;
4,5,6:jpg.Scale:=jsquarter;
7..100:jpg.Scale:=jseighth;
end;

bmp.Assign(jpg);
bmp.PixelFormat:=pf24bit;
w:=bmp.Width;
h:=bmp.Height;

cs:=0;
if (w>x ) or (h>y) then
if x/w>y/h then
cs:=y/h else cs:=x /w;
if (bmp.Width <=x)and(bmp.Height<=y) then cs:=1;


SmoothResize(bmp.Canvas.Handle, 0, 0,Round(bmp.width *cs),
Round(bmp.height *cs),bmp, 0, 0, bmp.width, bmp.height,1);

bmp3:=tbitmap.Create;
bmp3.Width:=Round(w *cs);
bmp3.Height:=Round(h *cs);

bmp3.Canvas.CopyRect(Rect (0, 0, w,h),Bmp.Canvas,Rect (0, 0, w, h));

ya:=(con.Height -bmp3.Height) div 2 ;
xa:=(con.Width -bmp3.Width) div 2;

img.Left:=xa;
img.Top:=ya;
img.Picture.Bitmap:=bmp3;
bmp3.Free;

bmp.Free;
ms.Free;
jpg.Free;

end;

使用方法:在Uses中加入stretch,jpeg控件,窗体加入panel1,image1放在panel1上,image1的属性不要修改,这样图像就可以居中显示在panel1上,可以通过改变panel1的大小缩小图像,大于原来图像我不予考虑。
var ms:tmemorystream;
begin
ms:=tmemorystream.creat;
ms.LoadFromFile(filename);
mstobmpa(ms,extractfileext(filename),'',true,panel1,image1,false);
end;

代码的关键,Strecth控件
unit stretch;

interface
uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ExtDlgs, ExtCtrls, StdCtrls;
type
TRGB = packed record
b, g, r: Byte;
end;
PRGB = ^TRGB;
TDIBBmp = record
hBmp: HBITMAP;
w, h: Integer;
gap, Lbytes: Integer;
Bits: PRGB;
end;

procedure SmoothResize(DestDC: HDC; dx, dy, dw, dh: Integer;
Bmp24: TBitmap; sx, sy, sw, sh: Integer;
TransColor: Cardinal); overload;
procedure SmoothResize(Dest: TDIBBmp; Bmp24: TBitmap; sx, sy, sw, sh: Integer;
TransColor: Cardinal); overload;
procedure TransBlt(destdc: HDC; dx, dy, dw, dh: Integer;
srcdc: HDC; sx, sy, sw, sh: Integer; c: Cardinal);
function NewDIBBmp(var bmp: TDIBBmp): HBITMAP;

implementation

function NewDIBBmp(var bmp: TDIBBmp): HBITMAP;
var
bmInfo: TBitmapInfo;
begin
bmInfo.bmiHeader.biSize := SizeOf(TBitmapInfoHeader);
bmInfo.bmiHeader.biPlanes := 1;
bmInfo.bmiHeader.biBitCount := 24;
bmInfo.bmiHeader.biCompression := BI_RGB;
bmInfo.bmiHeader.biWidth := bmp.w;
bmInfo.bmiHeader.biHeight := bmp.h;
bmp.hbmp := createDIBSection(0, bminfo, DIB_RGB_COLORS, pointer(bmp.bits), 0,
0);
bmp.lbytes := ((bmp.w * 24 + 31) shr 5) shl 2;
bmp.gap := bmp.w mod 4;
result := bmp.hbmp;
end;

procedure SmoothResize(DestDC: HDC; dx, dy, dw, dh: Integer;
Bmp24: TBitmap; sx, sy, sw, sh: Integer;
TransColor: Cardinal); overload;
var
tmpdc: HDC;
tmp: TDIBBmp;
begin
if ((sw = dw) and (sh = dh)) or (dw < 2) or (dh < 2) or (sw < 1) or (sh < 1)
then
transblt(destdc, dx, dy, dw, dh,bmp24.Canvas.handle,sx,sy,sw,sh,
transcolor)
else
begin
if bmp24.PixelFormat <> pf24Bit then
bmp24.PixelFormat := pf24Bit;
tmp.w := dw;
tmp.h := dh;
newdibbmp(tmp);
tmpdc := createcompatibledc(0);
deleteobject(selectobject(tmpdc, tmp.hbmp));
if integer(TransColor) <> clNone then
bitblt(tmpdc, 0, 0, dw, dh, destdc, dx, dy, SRCCOPY);
smoothResize(tmp, bmp24, sx, sy, sw, sh, transcolor);
bitblt(destdc, dx, dy, dw, dh, tmpdc, 0, 0, SRCCOPY);
deletedc(tmpdc);
deleteobject(tmp.hBmp);
end;
end;

procedure SmoothResize(Dest: TDIBBmp; Bmp24: TBitmap; sx, sy, sw, sh: Integer;
TransColor: Cardinal); overload;
var
srcw: Integer;
x, y, xP, yP,
yP2, xP2: Integer;
Read, Read2: PRGB;
t, z, z2, iz2: Integer;
pc: PRGB;
w1, w2, w3, w4: Integer;
Col1, Col2,
Col3, Col4: PRGB;
begin
srcw := ((bmp24.width * 24 + 31) shr 5) shl 2;
xP2 := ((sw - 1) shl 15) div dest.w;
yP2 := ((sh - 1) shl 15) div dest.h;
yP := 0;
pc := dest.bits;
for y := 0 to dest.h - 1 do
begin
xP := 0;
Read := pointer(bmp24.scanline[Bmp24.Height - 1 - yp shr 15 - sy]);
if yP shr 16 < sh - 1 then
Read2 := pointer(integer(read) + srcw)
else
Read2 := read;
z2 := yP and $7FFF;
iz2 := $8000 - z2;
for x := 0 to dest.w - 1 do
begin
t := (xP shr 15) + sx;
Col1 := pointer(integer(read) + t * 3);
if xp shr 15 < sw - 1 then
col3 := pointer(integer(col1) + 3)
else
col3 := col1;
if (integer(transcolor) <> clNone) and
(col1^.r = PRGB(@TransColor)^.b) and
(col1^.g = PRGB(@transcolor)^.g) and
(col1^.b = PRGB(@transcolor)^.r) then
col1 := pc;
if (integer(transcolor) <> clNone) and
(col3^.r = PRGB(@transcolor)^.b) and
(col3^.g = PRGB(@transcolor)^.g) and
(col3^.b = PRGB(@transcolor)^.r) then
col3 := pc;
Col2 := pointer(integer(read2) + t * 3);
col4 := pointer(integer(col2) + 3);
if (integer(transcolor) <> clNone) and
(col2^.r = PRGB(@transcolor)^.b) and
(col2^.g = PRGB(@transcolor)^.g) and
(col2^.b = PRGB(@transcolor)^.r) then
col2 := pc;
if (integer(transcolor) <> clNone) and
(col4^.r = PRGB(@transcolor)^.b) and
(col4^.g = PRGB(@transcolor)^.g) and
(col4^.b = PRGB(@transcolor)^.r) then
col4 := pc;
z := xP and $7FFF;
w2 := (z * iz2) shr 15;
w1 := iz2 - w2;
w4 := (z * z2) shr 15;
w3 := z2 - w4;
pc.b :=
(Col1^.b * w1 + col3^.b * w2 +
Col2^.b * w3 + col4^.b * w4) shr 15;
pc.g :=
(Col1^.g * w1 + col3^.g * w2 +
Col2^.g * w3 + col4^.g * w4) shr 15;
pc.r :=
(Col1^.r * w1 + col3^.r * w2 +
Col2^.r * w3 + col4^.r * w4) shr 15;
Inc(pc);
Inc(xP, xP2);
end;
Inc(yP, yP2);
pc := pointer(integer(pc) + dest.gap);
end;
end;

function IsW2K: Boolean;
begin
result := (win32platform = VER_PLATFORM_WIN32_NT) and (Win32MajorVersion >=
5);
end;

function IsW98: Boolean;
begin
result := (win32platform = VER_PLATFORM_WIN32_WINDOWS) and (
(Win32MajorVersion > 4) or (
(Win32MajorVersion = 4) and (Win32MinorVersion > 0)
));
end;

procedure TransBlt(destdc: HDC; dx, dy, dw, dh: Integer;
srcdc: HDC; sx, sy, sw, sh: Integer; c: Cardinal);
var
monodc: HDC;
monobmp: HBITMAP;
old: THandle;
begin
if isw2k or isw98 then
transparentblt(destdc, dx, dy, dw, dh, srcdc, sx, sy, sw, sh, c)
else
begin
monodc := createcompatibledc(0);
monobmp := createbitmap(sw, sh, 1, 1, nil);
old := selectobject(monodc, monobmp);
setbkcolor(srcdc, c);
bitblt(monodc, 0, 0, sw, sh, srcdc, sx, sy, SRCCOPY);
transparentstretchblt(destdc, dx, dy, dw, dh, srcdc, sx, sy, sw, sh,
monodc, 0, 0);
selectobject(monodc, old);
deleteobject(monobmp);
deletedc(monodc);
end;
end;

end.
 
抛砖引玉之图像不失真缩小

为了图像不失真缩小的问题我伤透了脑筋,一直没有圆满解决,所以现在要向DFW的高手求助了。为此我提供一段代码。需要使用strecth控件,这个控件能够实现一部分图像不失真缩小,但是对于一些图像的黑色部分处理不好,很影响显示效果,折中解决方法是将这种图片格式变为jpg.PixelFormat:=jf8bit;但这是牺牲图像质量的方法,图像变得粗糙。我认为是strecth的计算不够精确才会出现这样的问题,我没有能力解决。如果有高手是否能够为我修正一下!

代码:因为Delphi只是只是支持Jpeg图片1/2,1/4,1/8的不失真缩小,所以我首先按照这种方式缩小图像,如果图像大于需要显示的尺寸,就要计算出需要缩小的比例,用SmoothResize缩小,然后bmp.Canvas.CopyRect的方法复制图像(因为Strecth方式缩小的图像会重叠在一起)

procedure mstobmpa(ms:tmemorystream;ext,backname:string;smooth:boolean;con:tcontrol
;img:timage;wall:boolean);
var bmp,bmp3:tbitmap;
jpg:tjpegimage;
w,h,x,y,xa,ya,i:integer;
cs:real;
begin
bmp:=tbitmap.Create;
jpg:=tjpegimage.Create;
ext:=ansilowercase(ext);
if ext='.jpg' then
jpg.LoadFromStream(ms) else begin
bmp.LoadFromStream(ms);
jpg.Assign(bmp);
jpg.Compress;
end;

if smooth then
jpg.PixelFormat:=jf24bit else
jpg.PixelFormat:=jf8bit;

if not wall then begin
x:=con.Width ;
y:=con.Height ;
end else begin
x:=GetSystemMetrics(SM_CXSCREEN);
y:=GetSystemMetrics(SM_CySCREEN);

if (jpg.Width>x)or(jpg.Height >y)then begin
x:=con.Width;
y:=con.Height;
end;
end;




xa:=round(jpg.Width/x);
ya:=round(jpg.Height/y);
if xa>ya then i:=xa else i:=ya;
case i of
1:jpg.Scale:=jsFullSize;
2,3:jpg.Scale:=jshalf;
4,5,6:jpg.Scale:=jsquarter;
7..100:jpg.Scale:=jseighth;
end;

bmp.Assign(jpg);
bmp.PixelFormat:=pf24bit;
w:=bmp.Width;
h:=bmp.Height;

cs:=0;
if (w>x ) or (h>y) then
if x/w>y/h then
cs:=y/h else cs:=x /w;
if (bmp.Width <=x)and(bmp.Height<=y) then cs:=1;


SmoothResize(bmp.Canvas.Handle, 0, 0,Round(bmp.width *cs),
Round(bmp.height *cs),bmp, 0, 0, bmp.width, bmp.height,1);

bmp3:=tbitmap.Create;
bmp3.Width:=Round(w *cs);
bmp3.Height:=Round(h *cs);

bmp3.Canvas.CopyRect(Rect (0, 0, w,h),Bmp.Canvas,Rect (0, 0, w, h));

ya:=(con.Height -bmp3.Height) div 2 ;
xa:=(con.Width -bmp3.Width) div 2;

img.Left:=xa;
img.Top:=ya;
img.Picture.Bitmap:=bmp3;
bmp3.Free;

bmp.Free;
ms.Free;
jpg.Free;

end;

使用方法:在Uses中加入stretch,jpeg控件,窗体加入panel1,image1放在panel1上,image1的属性不要修改,这样图像就可以居中显示在panel1上,可以通过改变panel1的大小缩小图像,大于原来图像我不予考虑。
var ms:tmemorystream;
begin
ms:=tmemorystream.creat;
ms.LoadFromFile(filename);
mstobmpa(ms,extractfileext(filename),'',true,panel1,image1,false);
end;

代码的关键,Strecth控件
unit stretch;

interface
uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ExtDlgs, ExtCtrls, StdCtrls;
type
TRGB = packed record
b, g, r: Byte;
end;
PRGB = ^TRGB;
TDIBBmp = record
hBmp: HBITMAP;
w, h: Integer;
gap, Lbytes: Integer;
Bits: PRGB;
end;

procedure SmoothResize(DestDC: HDC; dx, dy, dw, dh: Integer;
Bmp24: TBitmap; sx, sy, sw, sh: Integer;
TransColor: Cardinal); overload;
procedure SmoothResize(Dest: TDIBBmp; Bmp24: TBitmap; sx, sy, sw, sh: Integer;
TransColor: Cardinal); overload;
procedure TransBlt(destdc: HDC; dx, dy, dw, dh: Integer;
srcdc: HDC; sx, sy, sw, sh: Integer; c: Cardinal);
function NewDIBBmp(var bmp: TDIBBmp): HBITMAP;

implementation

function NewDIBBmp(var bmp: TDIBBmp): HBITMAP;
var
bmInfo: TBitmapInfo;
begin
bmInfo.bmiHeader.biSize := SizeOf(TBitmapInfoHeader);
bmInfo.bmiHeader.biPlanes := 1;
bmInfo.bmiHeader.biBitCount := 24;
bmInfo.bmiHeader.biCompression := BI_RGB;
bmInfo.bmiHeader.biWidth := bmp.w;
bmInfo.bmiHeader.biHeight := bmp.h;
bmp.hbmp := createDIBSection(0, bminfo, DIB_RGB_COLORS, pointer(bmp.bits), 0,
0);
bmp.lbytes := ((bmp.w * 24 + 31) shr 5) shl 2;
bmp.gap := bmp.w mod 4;
result := bmp.hbmp;
end;

procedure SmoothResize(DestDC: HDC; dx, dy, dw, dh: Integer;
Bmp24: TBitmap; sx, sy, sw, sh: Integer;
TransColor: Cardinal); overload;
var
tmpdc: HDC;
tmp: TDIBBmp;
begin
if ((sw = dw) and (sh = dh)) or (dw < 2) or (dh < 2) or (sw < 1) or (sh < 1)
then
transblt(destdc, dx, dy, dw, dh,bmp24.Canvas.handle,sx,sy,sw,sh,
transcolor)
else
begin
if bmp24.PixelFormat <> pf24Bit then
bmp24.PixelFormat := pf24Bit;
tmp.w := dw;
tmp.h := dh;
newdibbmp(tmp);
tmpdc := createcompatibledc(0);
deleteobject(selectobject(tmpdc, tmp.hbmp));
if integer(TransColor) <> clNone then
bitblt(tmpdc, 0, 0, dw, dh, destdc, dx, dy, SRCCOPY);
smoothResize(tmp, bmp24, sx, sy, sw, sh, transcolor);
bitblt(destdc, dx, dy, dw, dh, tmpdc, 0, 0, SRCCOPY);
deletedc(tmpdc);
deleteobject(tmp.hBmp);
end;
end;

procedure SmoothResize(Dest: TDIBBmp; Bmp24: TBitmap; sx, sy, sw, sh: Integer;
TransColor: Cardinal); overload;
var
srcw: Integer;
x, y, xP, yP,
yP2, xP2: Integer;
Read, Read2: PRGB;
t, z, z2, iz2: Integer;
pc: PRGB;
w1, w2, w3, w4: Integer;
Col1, Col2,
Col3, Col4: PRGB;
begin
srcw := ((bmp24.width * 24 + 31) shr 5) shl 2;
xP2 := ((sw - 1) shl 15) div dest.w;
yP2 := ((sh - 1) shl 15) div dest.h;
yP := 0;
pc := dest.bits;
for y := 0 to dest.h - 1 do
begin
xP := 0;
Read := pointer(bmp24.scanline[Bmp24.Height - 1 - yp shr 15 - sy]);
if yP shr 16 < sh - 1 then
Read2 := pointer(integer(read) + srcw)
else
Read2 := read;
z2 := yP and $7FFF;
iz2 := $8000 - z2;
for x := 0 to dest.w - 1 do
begin
t := (xP shr 15) + sx;
Col1 := pointer(integer(read) + t * 3);
if xp shr 15 < sw - 1 then
col3 := pointer(integer(col1) + 3)
else
col3 := col1;
if (integer(transcolor) <> clNone) and
(col1^.r = PRGB(@TransColor)^.b) and
(col1^.g = PRGB(@transcolor)^.g) and
(col1^.b = PRGB(@transcolor)^.r) then
col1 := pc;
if (integer(transcolor) <> clNone) and
(col3^.r = PRGB(@transcolor)^.b) and
(col3^.g = PRGB(@transcolor)^.g) and
(col3^.b = PRGB(@transcolor)^.r) then
col3 := pc;
Col2 := pointer(integer(read2) + t * 3);
col4 := pointer(integer(col2) + 3);
if (integer(transcolor) <> clNone) and
(col2^.r = PRGB(@transcolor)^.b) and
(col2^.g = PRGB(@transcolor)^.g) and
(col2^.b = PRGB(@transcolor)^.r) then
col2 := pc;
if (integer(transcolor) <> clNone) and
(col4^.r = PRGB(@transcolor)^.b) and
(col4^.g = PRGB(@transcolor)^.g) and
(col4^.b = PRGB(@transcolor)^.r) then
col4 := pc;
z := xP and $7FFF;
w2 := (z * iz2) shr 15;
w1 := iz2 - w2;
w4 := (z * z2) shr 15;
w3 := z2 - w4;
pc.b :=
(Col1^.b * w1 + col3^.b * w2 +
Col2^.b * w3 + col4^.b * w4) shr 15;
pc.g :=
(Col1^.g * w1 + col3^.g * w2 +
Col2^.g * w3 + col4^.g * w4) shr 15;
pc.r :=
(Col1^.r * w1 + col3^.r * w2 +
Col2^.r * w3 + col4^.r * w4) shr 15;
Inc(pc);
Inc(xP, xP2);
end;
Inc(yP, yP2);
pc := pointer(integer(pc) + dest.gap);
end;
end;

function IsW2K: Boolean;
begin
result := (win32platform = VER_PLATFORM_WIN32_NT) and (Win32MajorVersion >=
5);
end;

function IsW98: Boolean;
begin
result := (win32platform = VER_PLATFORM_WIN32_WINDOWS) and (
(Win32MajorVersion > 4) or (
(Win32MajorVersion = 4) and (Win32MinorVersion > 0)
));
end;

procedure TransBlt(destdc: HDC; dx, dy, dw, dh: Integer;
srcdc: HDC; sx, sy, sw, sh: Integer; c: Cardinal);
var
monodc: HDC;
monobmp: HBITMAP;
old: THandle;
begin
if isw2k or isw98 then
transparentblt(destdc, dx, dy, dw, dh, srcdc, sx, sy, sw, sh, c)
else
begin
monodc := createcompatibledc(0);
monobmp := createbitmap(sw, sh, 1, 1, nil);
old := selectobject(monodc, monobmp);
setbkcolor(srcdc, c);
bitblt(monodc, 0, 0, sw, sh, srcdc, sx, sy, SRCCOPY);
transparentstretchblt(destdc, dx, dy, dw, dh, srcdc, sx, sy, sw, sh,
monodc, 0, 0);
selectobject(monodc, old);
deleteobject(monobmp);
deletedc(monodc);
end;
end;

end.
 
嘿嘿 有兴趣 关注下。。。。。。

以前我也想做类似的,无奈对这方面一窍不通,只好用image来放大缩小,其结果惨不忍睹。。
 
天哪!我的问题就是那么难吗?我等了那么久就没有人可以提高一点东西吗?帮我顶一下也好啊!强烈请求关注!多谢各位了。
 
看来没人能够解决这个问题,结束吧!
 
我来留个位置,可以去http://www.2ccc.com下载那个图形处理的书,里面有说缩小的问题,可能对你有用,去找一下
 
其实目前为止这是我能够找到的最好方法,起码在这个论坛里面我还没有发现比我这段代码更加好的了,我只是希望它更加好而已,而且我总是觉得只要在努一把力就能够实现,以前我在这个论坛看到很多人提问这个问题,但是都没有我的这个好,所以我决定提供我的一段代码,看看对大家有没有启发而已。因为一个人的力量实在太小了。
 
如果你对此十分有兴趣,建议你和www.focussee.com的主人交流一下。他的软件这方面做得不错。
 
那个软件不错,不过我说不出口问,因为也许那是别人的核心技术,而且可能是别的语言编写的,而且我只是对Delphi了解一点而已,另外我的这段代码已经完成了图像显示的大部分功能,而且效果也不是那么差,只是还有不足而已,如果有人能够修改好可以造福很多人的,所以我才抛砖引玉。Delphi的图像显示是比较差的。
 
你就尽管问吧,人家在打广告呢[:D][:D]
 
老大,如果这个问题能成的话,那就又多了一个压缩标准了!
 
看来要结束了!
 
多人接受答案了。
 
chenybin:你好,我其实今天只是想试一下如何收回自己的分,我不是很了解这个论坛的规矩。另外我不会吝啬那些分的,我一直认为如果是好的代码或者好的创意那些分算什么?如果你认为我的行为不好我对你道歉,如果可以我可以将所有的分给你。
另外我这样做的原因是因为这个问题我提出很久了,我一直没有得到有效的答案,而且我认为如果没有任何贡献就想要分的心理是否好呢?就像我现在想说的如果你那么在乎那些分,告诉我一下,我在找个方法满足你,我可以将所有的分都给你。我是这样的人:就是无功不受禄。
 
很荣幸,这个问题我一点都不懂,所以我没觉得什么,但是其他人是参与了,却把分给一个没有参与的人,所以我才会这么说,我的意思是希望yyy03朋友不是你自己,这个论坛对马甲好像比较敏感,如果真的不是,我很惭愧,我是小人之心了。

楼主说得很对,没有贡献确实不应该要分,惭愧惭愧,被楼主的技术和为人深深的折服了
 
100分而已,这样的情况这里多了。。。。。chenybin别这么在意啦,嘿嘿

不是我们想要那些分,正如楼主说的,一直没得到有效的答案,没有任何贡献不应该得分,所以看到一个只说了一句该结束了的家伙就拿了全部的分数,心理当然不平衡。
楼主你觉得呢?
 
后退
顶部