سؤال

لدي مربع صورة، وإذا استخدمت Snipet أدناه:

Clipboard.SetImage(PictureBox.image)

ثم يمكنني لصق الصورة فقط في أشياء مثل الطلاء و MS Word. لا أستطيع لصقها كملف في مجلد / سطح المكتب.

فكيف يمكنني نسخ الصورة إلى الحافظة، وإذا تم لصقها إلى مجلد، فسيصبح ملف؟

هل كانت مفيدة؟

المحلول

إذا كنت تستخدم .NET وهدفك النهائي هو حفظ الملف، فهناك الكثير أسهل،

هنا لن يكون الرمز الموجود في C #، يقوم بتنفيذها في vb.net صعبا، أنا كسول للغاية للقيام بذلك :) على أي حال، عليك أن تنقذها في مكان ما قبل أن تقوم بالصق ذلك ...

يقوم بتحميل الملف إلى مربع الصورة ويقوم بإحفظه مرة أخرى إلى ملف، (عرجاء، أعرف) وتعيين بيانات الحافظة كعملية نسخ

ثم عند لصق (CTRL + V)، يتم لصقها.

C # __ BMP BMP؛ سلسلة Filename = @ "C:  Image.bmP"؛ // هنا أفترض أنك تحميله من ملف، قد تحصل على الصورة من مكان آخر، قد يختلف التعليمات البرمجية الخاصة بك

pictureBox1.Image=(Image) Bitmap.FromFile(fileName); bmp=(Bitmap)pictureBox1.Image; bmp.Save(@"c:\image2.bmp"); System.Collections.Specialized.StringCollection st = new System.Collections.Specialized.StringCollection(); st.Add(@"c:\image2.bmp"); System.Windows.Forms.Clipboard.SetFileDropList(st); </pre>

وحاول Viola اللصق في مجلد سيتم لصق الملف image2.bmp.

نصائح أخرى

هنا أساسا ما vivingk نشر ولكن استدار إلى VB. صعودا تصويته إذا كان هذا يعمل من أجلك. ما عليك أن تفهمه هو أن المستكشف سوف يسمح لك فقط بلصق الملفات، وليس الكائنات (AFAIK على أي حال). السبب هو أنه إذا قمت بنسخ بيانات الصورة إلى الحافظة، فما هو التنسيق الذي يجب أن يعشقه؟ PNG، BMP، JPG؟ ما إعدادات الضغط؟ لذلك، قال lovek، عليك أن تفكر في ذلك، وإنشاء ملف لوحدك في مكان ما على النظام واستخدامه SetFileDropList مما سيضيف ملف TEMP إلى الحافظة.

'   Add it as an image
    Clipboard.SetImage(PictureBox1.Image)

    'Create a JPG on disk and add the location to the clipboard
    Dim TempName As String = "TempName.jpg"
    Dim TempPath As String = System.IO.Path.Combine(My.Computer.FileSystem.SpecialDirectories.Temp, TempName)
    Using FS As New System.IO.FileStream(TempPath, IO.FileMode.Create, IO.FileAccess.Write, IO.FileShare.Read)
        PictureBox1.Image.Save(FS, System.Drawing.Imaging.ImageFormat.Jpeg)
    End Using
    Dim Paths As New System.Collections.Specialized.StringCollection()
    Paths.Add(TempPath)
    Clipboard.SetFileDropList(Paths)
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top