Обновлен метод SaveImage () для поддержки рисования текста.
void saveImage() {
File myDir=new File("/sdcard/saved_images");
myDir.mkdirs();
Random generator = new Random();
int n = 10000;
n = generator.nextInt(n);
String fname = "Image-"+ n +".jpg";
File file = new File (myDir, fname);
if (file.exists ()) file.delete ();
try {
FileOutputStream out = new FileOutputStream(file);
// NEWLY ADDED CODE STARTS HERE [
Canvas canvas = new Canvas(originalBitmap);
Paint paint = new Paint();
paint.setColor(Color.WHITE); // Text Color
paint.setTextSize(12); // Text Size
paint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.SRC_OVER)); // Text Overlapping Pattern
// some more settings...
canvas.drawBitmap(originalBitmap, 0, 0, paint);
canvas.drawText("Testing...", 10, 10, paint);
// NEWLY ADDED CODE ENDS HERE ]
originalBitmap.compress(Bitmap.CompressFormat.JPEG, 90, out);
out.flush();
out.close();
} catch (Exception e) {
e.printStackTrace();
}
}
Дайте мне знать, если это работает для вас.
Шаш
Думаю, я просто буду использовать:
FormatCurrency(-1234.56, 2, UseParensForNegativeNumbers:=TriState.False)
(в модуле Microsoft.VisualBasic.Strings)
Или, короче (это то, что я собираюсь использовать):
FormatCurrency(-1234.56, 2, 0, 0)
Или я создам для себя пользовательскую функцию formatcurrency, которая использует функцию VB, передающую мои пользовательские параметры.
Для получения дополнительных сведений см. Функция FormatCurrency (Visual Basic) в msdn.
Правильно ли я говорю, что он помещает его в квадратные скобки, то есть форматирует его как (1234,00 $)
? Если да, то я считаю, что это предполагаемое поведение для США.
Однако вы можете создать свой собственный NumberFormatInfo
, который не ведет себя подобным образом. Возьмите существующий NumberFormatInfo
, который "в основном правильный", вызовите Clone ()
, чтобы сделать изменяемую копию, а затем установите CurrencyNegativePattern
соответствующим образом (я думаю, вам нужно значение 2).
Например:
using System;
using System.Globalization;
class Test
{
static void Main()
{
var usCulture = CultureInfo.CreateSpecificCulture("en-US");
var clonedNumbers = (NumberFormatInfo) usCulture.NumberFormat.Clone();
clonedNumbers.CurrencyNegativePattern = 2;
string formatted = string.Format(clonedNumbers, "{0:C2}", -1234);
Console.WriteLine(formatted);
}
}
Это напечатает $ - 1,234,00. Если вам действительно нужно ровно -1234 доллара, вам нужно установить для свойства CurrencyGroupSizes
значение new int [] {0}
и использовать "{0: C0}"
вместо "{0: C2}"
в качестве строки формата.
РЕДАКТИРОВАТЬ: вот вспомогательный метод, который вы можете использовать, который в основном делает то же самое:
private static readonly NumberFormatInfo CurrencyFormat = CreateCurrencyFormat();
private static NumberFormatInfo CreateCurrencyFormat()
{
var usCulture = CultureInfo.CreateSpecificCulture("en-US");
var clonedNumbers = (NumberFormatInfo) usCulture.NumberFormat.Clone();
clonedNumbers.CurrencyNegativePattern = 2;
return clonedNumbers;
}
public static string FormatCurrency(decimal value)
{
return value.ToString("C2", CurrencyFormat);
}