سؤال

أحاول ترميز منشئ مخطط انسيابي للغة باستخدام روبي.

كنت أرغب في معرفة ما إذا كانت هناك أي مكتبات يمكنني استخدامها لرسم أشكال مختلفة لعناصر المخطط الانسيابي المختلفة وكتابة نص لتلك الأشكال.

أفضل حقًا عدم الاضطرار إلى كتابة تعليمات برمجية لرسم الأشكال الأساسية، إذا كان بإمكاني مساعدتها.

هل يمكن لأي شخص أن يوجهني إلى بعض الوثائق المرجعية مع أمثلة لاستخدام تلك المكتبة؟

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

المحلول

الجواب البسيط هو أنه (في وقت كتابة هذا التقرير) من المؤكد تقريبًا أن ما تريده لم يكن موجودًا.آسف!

إذا كنت تستخدم نظام التشغيل Windows، فسأبحث عن منتج في مساحة .NET، حيث أتوقع أنك ستجد شيئًا ما.ربما سيتعين عليك دفع أموال حقيقية بالرغم من ذلك.أفترض، إذا كنت شجاعًا، فقد تتمكن من التحدث إليه باستخدام IronRuby.

من بيئة غير تابعة لـ MS، أتمنى الحصول على حل يستند إلى Java.كما ذكرنا من قبل، في عالم الويب، سوف تأمل في الحصول على شيء يعتمد على JavaScript، أو ربما على الأرجح، شيء من عالم Flash (أو ربما حتى Silverlight؟).

في الواقع، إذا كنت تريد البقاء في روبي ولا تمانع في بعض المخاطر، فقد يكون Silverlight هو الحل المناسب - بافتراض أن عناصر DLR تعمل بالفعل (لا توجد خبرة هنا).روبي - بقدر ما أحبها - بالكاد تحتوي على بنية واجهة المستخدم الرسومية الأكثر نضجًا حولها.

تحديث:منذ كتابة هذا (منذ حوالي 5 سنوات) تحسن الوضع - قليلاً.على الرغم من أنني لا أزال غير مطلع على أي مكتبات محددة لرسم الرسوم البيانية لروبي، إلا أن هناك دعمًا محسنًا لـ جراففيز هنا (جيثب) او بواسطة gem install ruby-graphviz.لقد وجدت أنه بالنسبة للرسوم البيانية البسيطة، من الممكن تمامًا كتابة البرنامج النصي مباشرة من روبي.

نصائح أخرى

اكتب المخطط الانسيابي الخاص بك كرسم بياني موجه أو غير موجه جراففيز.Graphviz لديه لغة، نقطة مما يجعل من السهل إنشاء الرسوم البيانية.ما عليك سوى إنشاء الملف النقطي وتشغيله من خلال Graphiviz وستحصل على صورتك.

graph {
  A -- B -- C;
  B -- D;
  C -- D [constraint=false];
}

يجعل كما
undirected

digraph {
  A [label="start"];
  B [label="eat"];
  C [label="drink"];
  D [label="be merry"];

  A -> B -> C;
  C -> D [constraint=false];
  B -> D [ arrowhead=none, arrowtail=normal]; // reverse this edge
}

يجعل كما
directed

يمكنك التحكم في أشكال العقدة وغير ذلك الكثير في Graphviz.

يبدو أنك ستكون مقيدًا بشكل أساسي بقدرات أي وكيل مستخدم تقوم بإنشائه من أجله؛إذا كان هذا مشروع ويب، فستعتمد إمكانيات الرسم على المتصفح.نظرًا لأن Ruby يعمل من جانب الخادم، فستحتاج على الأقل إلى بعض JavaScript للسماح بالسحب/التكبير/التصغير، وما إلى ذلك.هناك الكثير من الأمثلة على استخدام جافا سكريبت للرسم المتجه (فقط "مكتبة رسومات جافا سكريبت على Google")، ولكن جميعها تتطلب ترميزًا، ولم أر أي مكتبة تلخص هذا بشكل أنيق.

يحتوي ImageMagick على رابط Ruby يسمى RMagick (يُعرف أحيانًا بأسماء أخرى، اعتمادًا على المستودع).(وصلة) لم أستخدمها بنفسي ، لكنني أعتقد أنها ستفعل ما تبحث عنه.سوف تحتاج إلى القيام ببعض الترميز، ولكن ذلك على غرار

draw.rectangle(x1, y1, x2, y2)
draw.polygon(x1, y1,...,xN, yN)

أنا متأكد تمامًا، ولكن تحقق من روابط القاهرة بحثًا عن الياقوت.بانغو للنص.أنا أقوم بالتحقيق في ذلك الوقت حاليًا وعثرت على هذه الصفحة.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top