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

نام تاپیک: قرار دادن فونت در dll

  1. #1

    قرار دادن فونت در dll

    سلام
    من یه کامپوننت درست کردم و در اون از یه فونت است استفاده کردم.
    1- چطور میتونم این فونت رو داخل فایل dll قرار بدم. من فونت رو ریختم تو resources ولی خطا داد. مشکل چیه. چه حوری میشه اینکارو کرد؟
    2- چه جوری میشه یه فایل dll رو داخل dll گذاشت. (تو کامپوننت من از یه کامپوننت دیگه استفاده شده)

  2. #2
    کاربر دائمی آواتار shahryari
    تاریخ عضویت
    اسفند 1390
    محل زندگی
    آذربايجان
    سن
    42
    پست
    1,248

    نقل قول: قرار دادن فونت در dll

    باسلام
    البته شما در تالار سی شارپ این سوال را مطرح کردید و در این سیستم من فقط وی بی دات نت نصب است و دسترسی به IDE سی را ندارم ، لذا کدها را در زبان وی بی دات نت تست کردم و جواب داد و برایتان به زبان وی بی دات نت گذاشتم که از این بابت عذرخواهی میکنم
    1- چطور میتونم این فونت رو داخل فایل dll قرار بدم. من فونت رو ریختم تو resources ولی خطا داد. مشکل چیه. چه حوری میشه اینکارو کرد؟
    شدنش که میشه 100 %
    ابتدا یک فونت را که در سیستمتان نصب نیست را کپی و در قسمت ریسورسیز پروژه پیست کنید
    Imports System.Drawing.Text
    Imports System.Runtime.InteropServices

        Private myFonts As PrivateFontCollection
    Private fontBuffer As IntPtr

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    If myFonts Is Nothing Then
    myFonts = New PrivateFontCollection
    Dim font() As Byte = My.Resources.IranNastaliq
    fontBuffer = Marshal.AllocCoTaskMem(font.Length)
    Marshal.Copy(font, 0, fontBuffer, font.Length)
    myFonts.AddMemoryFont(fontBuffer, font.Length)
    End If
    End Sub

        Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
    Label1.Font = New Font(myFonts.Families(0), 16, FontStyle.Regular)
    End Sub



    2- چه جوری میشه یه فایل dll رو داخل dll گذاشت. (تو کامپوننت من از یه کامپوننت دیگه استفاده شده)
    باید توجه داشته باشید که بعضی دی ال ال ها که رابط گرافیکی و آبجکت و فرم دارند را نمیتوان به ریسورس انبدد کرد (عنایت داشته باشید که عرض کردم بعضی دی ال ال ها)
    اما من اکثر دی ال هایی که فقط از توابعشون استفاده میکنم و رابط گرافیکی ندارند ، را به فایل اگزه مرج میکنم و استفاده میکنم
    ابتدا تابع زیر را تعریف کنید
        Private Function ResolveAssemblies(ByVal sender As Object, ByVal e As System.ResolveEventArgs) As Reflection.Assembly
    Dim desiredAssembly = New Reflection.AssemblyName(e.Name)

    If desiredAssembly.Name = "test_dll" Then
    Return Reflection.Assembly.Load(My.Resources.test_dll)
    Else
    Return Nothing
    End If
    End Function

    سپس در رویداد لود برنامه فراخوانی بکنبد
    AddHandler AppDomain.CurrentDomain.AssemblyResolve, AddressOf ResolveAssemblies


    موفق باشید

  3. #3

    نقل قول: قرار دادن فونت در dll

    سلام ممنون
    کد مربوطه رو تبدیل کردم و کار کرد ولی کد مربوط به dll v رو چه چوری استفاده کنم؟
    کد فونت:
                if (myFonts == null) 
    {
    myFonts = new PrivateFontCollection();
    byte[] font = Properties.Resources.B_Nazanin;
    fontBuffer = Marshal.AllocCoTaskMem(font.Length);
    Marshal.Copy(font, 0, fontBuffer, font.Length);
    myFonts.AddMemoryFont(fontBuffer, font.Length);
    }


                Label1.Font = new Font(myFonts.Families[0], 13, FontStyle.Regular);


    اینم کد dll:
            private System.Reflection.Assembly ResolveAssemblies(object sender, System.ResolveEventArgs e)
    {
    dynamic desiredAssembly = new System.Reflection.AssemblyName(e.Name);

    if (desiredAssembly.Name == "test_dll")
    {
    return System.Reflection.Assembly.Load(Properties.Resourc es.Ionic_Zip);
    }
    else {return null; }

    }


    اینم در لود فرم:
                AppDomain.CurrentDomain.AssemblyResolve += ResolveAssemblies;

  4. #4
    کاربر دائمی آواتار shahryari
    تاریخ عضویت
    اسفند 1390
    محل زندگی
    آذربايجان
    سن
    42
    پست
    1,248

    نقل قول: قرار دادن فونت در dll

    خیلی خوب تبدیل کردی احسنت اما ....
    test_dll را با Ionic.Zip عوض کن

    private System.Reflection.Assembly ResolveAssemblies(object sender, System.ResolveEventArgs e)
    {
    dynamic desiredAssembly = new System.Reflection.AssemblyName(e.Name);

    if (desiredAssembly.Name == "Ionic.Zip")
    {
    return System.Reflection.Assembly.Load(Properties.Resourc es.Ionic_Zip);
    }
    else {return null; }

    }

  5. #5

    نقل قول: قرار دادن فونت در dll

    ممنون
    خوب چه جوری تو برنامه ازش استفاده کنم؟
    من یه تابع دارم که فایل زیپ رو Extract میکنه:

                    using (var zip = Ionic.Zip.ZipFile.Read("file address"))
    {
    zip.Password = "123";
    zip.ExtractAll("destination address");
    }

  6. #6

    نقل قول: قرار دادن فونت در dll

    تو برنامه به کد بالا گیر مده

  7. #7

    نقل قول: قرار دادن فونت در dll

    سلام
    کسی میتونه کمک کنه؟
    آخرین ویرایش به وسیله sadeghjun : پنج شنبه 21 شهریور 1392 در 11:36 صبح

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

  1. قرار دادن فرم در dll و فراخوانی آن
    نوشته شده توسط M.T.P در بخش برنامه نویسی در 6 VB
    پاسخ: 0
    آخرین پست: پنج شنبه 29 بهمن 1388, 13:59 عصر
  2. مقاله: قرار دادن فونت در CSS3
    نوشته شده توسط milad.khalafi در بخش طراحی وب (Web Design)
    پاسخ: 0
    آخرین پست: سه شنبه 31 شهریور 1388, 14:46 عصر
  3. سوال: قرار دادن فونت خارجی برای تکست باکس
    نوشته شده توسط sysman_20 در بخش C#‎‎
    پاسخ: 1
    آخرین پست: پنج شنبه 07 خرداد 1388, 15:29 عصر
  4. سوال: قرار دادن فونت ها در RichtextBox
    نوشته شده توسط aeirik در بخش C#‎‎
    پاسخ: 5
    آخرین پست: یک شنبه 20 مرداد 1387, 15:48 عصر
  5. قرار دادن فونت های ویندوز در یک combobox
    نوشته شده توسط mohamad2007 در بخش VB.NET
    پاسخ: 3
    آخرین پست: یک شنبه 25 آذر 1386, 15:48 عصر

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

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