نمایش نتایج 1 تا 4 از 4

نام تاپیک: مشکل در استفاده از CopyRect

  1. #1
    کاربر دائمی آواتار mbshareat
    تاریخ عضویت
    آبان 1387
    محل زندگی
    شهر مقدس قم-چهارمردان-کوچه 37
    پست
    963

    مشکل در استفاده از CopyRect

    سلام
    میخوام قسمت بالای یک تصویر رو با قسمت پایین یک تصویر دیگه ترکیب کنم
    این کد رو امتحان کردم فقط چند تا نقطه سیاه به وسط تصویر اضافه کرد..جریان چیه؟
      Image1.Picture.Bitmap.Canvas.CopyRect(Rect(0,Image  1.Height Div 2,Image1.Width,Image1.Height-Image1.Height Div 2+1)
    ,Image2.Picture.Bitmap.Canvas,Rect(0,Image1.Height Div 2,Image1.Width,Image1.Height-Image1.Height Div 2+1));



  2. #2
    کاربر دائمی آواتار mbshareat
    تاریخ عضویت
    آبان 1387
    محل زندگی
    شهر مقدس قم-چهارمردان-کوچه 37
    پست
    963

    نقل قول: مشکل در استفاده از CopyRect

    عجیبه این کد هم مفید نبود:
      var
    X,Y:Word;
    P,P2: pRGBArray;
    ...
    For Y:=(B.Height Div 2) to B.Height-1 Do
    Begin
    P:=B.ScanLine[Y];
    P2:=B2.ScanLine[Y];
    For X:=0 to B.Width-1 Do
    P[X]:=P2[X];
    End;



  3. #3
    کاربر دائمی آواتار mbshareat
    تاریخ عضویت
    آبان 1387
    محل زندگی
    شهر مقدس قم-چهارمردان-کوچه 37
    پست
    963

    نقل قول: مشکل در استفاده از CopyRect

    نمی دونم چرا در یه برنامه به کد بالا گیر نداد در یه برنامه دیگه به نوع انتساب آخر کد گیر داد:
    این کد برای ترکیب تصویر دو Image کار کرد:
    procedure TForm1.Button1Click(Sender: TObject);
    var
    X,Y:Word;
    P,P2: pRGBArray;
    B,B2:TBitmap;
    begin
    B:=Image1.Picture.Bitmap;
    B2:=Image2.Picture.Bitmap;
    For Y:=(B.Height Div 2) to B.Height-1 Do
    Begin
    P:=B.ScanLine[Y];
    P2:=B2.ScanLine[Y];
    For X:=0 to B.Width-1 Do
    Begin
    P[X].rgbtRed:=P2[X].rgbtRed;
    P[X].rgbtGreen:=P2[X].rgbtGreen;
    P[X].rgbtBlue:=P2[X].rgbtBlue;
    End;
    End;
    Image1.Refresh;
    end;




    اما در برنامه نهاییم کار نمی کنه و نمی دونم چرا موجب مکث دو سه ثانیه ای میشه.با اینکه اینجور کار با بیت مپ خیلی سریعه!


    این کد در برنامه نهایی کاملا بیفایده بود:

    Bmp1.Assign(B);


    For Y:=(B.Height Div 2) to B.Height-1 Do
    Begin
    P:=B.ScanLine[Y];
    P2:=PrePageBmp.ScanLine[Y];
    For X:=0 to B.Width-1 Do
    Begin
    P[X].rgbtBlue:=P2[X].rgbtBlue;
    P[X].rgbtGreen:=P2[X].rgbtGreen;
    P[X].rgbtRed:=P2[X].rgbtRed;
    End;
    End;
    Bmp1.SaveToFile('C:\A.bmp');
    PrePageBmp.SaveToFile('C:\B.bmp');
    B.SaveToFile('C:\C.bmp');



    A.Bmp , C.Bmp مثل هم میشند با اینکه C.Bmp باید از ترکیب A.Bmp ,B.Bmp بدست بیاد!
    آخرین ویرایش به وسیله mbshareat : یک شنبه 22 دی 1398 در 22:20 عصر

  4. #4
    کاربر دائمی آواتار mbshareat
    تاریخ عضویت
    آبان 1387
    محل زندگی
    شهر مقدس قم-چهارمردان-کوچه 37
    پست
    963

    نقل قول: مشکل در استفاده از CopyRect

    دیگه نمی دونم چه کار کنم..یه کد ساده به نظر میاد.
    یه بار فکر کردم نکنه عمق بیت رو باید 24 بیت کنم دیدم نه نیاز نیست برای فیلترهای تصویری که اعمال کردم چنین کاری نکردم.
    این کد هم کار نکرد:
    procedure Combine2Bmps(TopBmp,BottomBmp:TBitmap;var CombinedBmp:TBitmap);
    Var
    X,Y:Word;
    P,P2: pRGBArray;
    begin
    For Y:=(TopBmp.Height Div 2) to TopBmp.Height-1 Do
    Begin
    P:=TopBmp.ScanLine[Y];
    P2:=BottomBmp.ScanLine[Y];
    For X:=0 to TopBmp.Width-1 Do
    Begin
    P[X].rgbtBlue:=P2[X].rgbtBlue;
    P[X].rgbtGreen:=P2[X].rgbtGreen;
    P[X].rgbtRed:=P2[X].rgbtRed;
    End;
    End;
    CombinedBmp.Assign(TopBmp);
    end;



    با اینکه در مورد اون دو تا Image اینطوری کار می کنه:
    procedure TForm1.Button1Click(Sender: TObject);
    var
    X,Y:Word;
    P,P2: pRGBArray;
    B,B2:TBitmap;
    begin
    B:=Image1.Picture.Bitmap;
    B2:=Image2.Picture.Bitmap;
    Combine2Bmps(B,B2,B);
    Image1.Refresh;
    end;


    کسی تا حالا از این کارها کرده راهنمایی کنه؟

تاپیک های مشابه

  1. پاسخ: 4
    آخرین پست: یک شنبه 26 مرداد 1399, 00:59 صبح
  2. سوال: مشکل در رنگ ناحیه کپی شده با CopyRect!
    نوشته شده توسط mbshareat در بخش مباحث عمومی دلفی و پاسکال
    پاسخ: 0
    آخرین پست: یک شنبه 30 مهر 1391, 18:31 عصر

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •