PDA

View Full Version : نمایش تصویر پرسنل بصورت دایره



mahdy.asia
سه شنبه 27 آبان 1393, 17:40 عصر
من می خواهم تصویر پرسنل را داخل دایره نمایش دهم (تصویر می بایست Strethc شود و بصورت کامل داخل دایره نمایش داده شود)

125836

کد زیر را برای اینکار نوشتم در یک فرم درست کار می کند و در فرم دیگر تصویر بصورت Tile نمایش داده می شود.


var
Image2: TImage;
begin
Image2 := TImage.Create(nil); // create instance of TImage
// Image.Picture.RegisterFileFormat('bmp', 'Just a normal BMP File!', TBitmap);
Image2.Picture.LoadFromFile(PubAddress_Pic);
Image2.Stretch := true ;
Shape1.Brush.Bitmap := Image2.Picture.Bitmap;
Shape1.Brush.Bitmap.Canvas.StretchDraw(Shape1.Boun dsRect, Image2.Picture.Bitmap);

دلفــي
چهارشنبه 28 آبان 1393, 13:05 عصر
const
BORDER = 3;
Var
Bmp : TBitmap;
w, h: Integer;
x, y: Integer;
begin
Bmp:=TBitmap.Create;
try
Bmp.PixelFormat:=pf24bit;
Bmp.Canvas.Font.Name :='Arial';
Bmp.Canvas.Font.Size :=20;
Bmp.Canvas.Font.Color := clWhite;
w :=Bmp.Canvas.TextWidth(IntToStr(sped1.Value));
h :=Bmp.Canvas.TextHeight(IntToStr(sped1.Value));
Bmp.Width := Max(w, h) + BORDER * 2;
Bmp.Height := Max(w, h) + BORDER * 2;
x := (Bmp.Width - w) div 2;
y := (Bmp.Height - h) div 2;
Bmp.Canvas.Brush.Color := clBlue;
Bmp.Canvas.FillRect(Rect(0,0, Bmp.Width, Bmp.Height));
Bmp.Canvas.Brush.Color := clRed;
Bmp.Canvas.Pen.Color := clRed;
Bmp.Canvas.Ellipse(0, 0, Bmp.Width, Bmp.Height);
Bmp.Canvas.TextOut(x, y, IntToStr(sped1.Value));
img1.Picture.Assign(bmp);
// img1.transparent = true;
// img1.stretch = true;
finally
Bmp.Free;
end;

mahdy.asia
پنج شنبه 29 آبان 1393, 02:11 صبح
سلام دوست عزیز کد شما یک دایره رسم می کنه و داخلش رو رنگ می زنه بعدم داخلش چیزی می نویسه من می خوام عکس اداری پرسنل رو بصورت دایره ایی نمایش بدم
کد زیر هم تصویر رو به شکل دایره در میاره ولی stretch نمی کنه



procedure TForm2.Button1Click(Sender: TObject);
var
Bitmap : TBitmap ;
begin
Bitmap := TBitmap.Create;
try
Bitmap.LoadFromFile('c:\pic.BMP');
Form2.Canvas.Brush.Bitmap := Bitmap;
Form2.Canvas.Ellipse(Rect(0,0,100,100));
finally
Form2.Canvas.Brush.Bitmap := nil;
Bitmap.Free;
end;


end;

mahdy.asia
پنج شنبه 29 آبان 1393, 02:32 صبح
کد زیر Stretch هم می کنه اما تو برنامه ایی که من استفاده می کنم بازم tile نشون می ده



procedure TForm2.Button1Click(Sender: TObject);
var
Bitmap : TBitmap ;
begin
Bitmap := TBitmap.Create;
try
Bitmap.LoadFromFile('c:\pic.BMP');
Form2.Canvas.Brush.Bitmap := Bitmap;
Form2.Canvas.Brush.Bitmap.Canvas.StretchDraw(Rect( 0,0,100,100), Bitmap) ;
Form2.Canvas.Ellipse(Rect(0,0,100,100));
finally
Form2.Canvas.Brush.Bitmap := nil;
Bitmap.Free;
end;


end;

mahdy.asia
یک شنبه 02 آذر 1393, 09:33 صبح
چرا باید این کد در یک فرم تصویر را stretch کنه در یک فرم tile نمایش دهد(کد تاپیک بالا)

دلفــي
یک شنبه 02 آذر 1393, 13:13 عصر
فايل ضميمه را دانلود كنيد

farshad_shams
دوشنبه 03 آذر 1393, 09:53 صبح
به نظرم بهترین راه اینه که Image رو بذاری داخل یک Panel (چون Image هندل نداره) و بعد با استفاده از تابع CreateEllipticRgn پنل رو به شکل دایره در بیار

mahdy.asia
چهارشنبه 05 آذر 1393, 18:40 عصر
من یک shape روی فرم گذاشتم و bitmap یک image را به آن اختصاص دادم اما لیه های تصویر کیفیت پایینی داره چطور می تونم کیفیت قاب دایره تصویر را دقیقتر کنم
126053