private void ImportButton_Click(object sender, EventArgs e) { if (this.SearchChar.Text.Length <= 0) { return; } Color bgcolor = GetFontColor(this.FontType.SelectedIndex == 0); Bitmap paletteHint = ImageUtil.ByteToImage4(16, 16, new byte[64], 0, bgcolor); Bitmap bitmap = ImageUtil.LoadAndCheckPaletteUI(this , paletteHint , 2 * 8, 2 * 8); if (bitmap == null) { return; } //画像 this.SelectFontBitmapByte = ImageUtil.Image4ToByte(bitmap); U.ForceUpdate(this.FontWidth, 9); //画像等データの書き込み WriteButton.PerformClick(); //即検索 SearchButton.PerformClick(); }
StringBuilder ExportALL(InputFormRef.AutoPleaseWait pleaseWait, string basedir, bool isItemFont) { List <Address> list = new List <Address>(); MakeAllDataLengthInner(isItemFont, ref list); PatchUtil.PRIORITY_CODE priorityCode = PatchUtil.SearchPriorityCode(); Color bgcolor = GetFontColor(isItemFont); StringBuilder sb = new StringBuilder(); foreach (Address a in list) { if (a.DataType != FEBuilderGBA.Address.DataTypeEnum.FONT) { continue; } if (a.Addr <= Program.ROM.RomInfo.font_default_end()) {//規定のフォント continue; } int out_width; byte[] fontbyte = ReadFontData(a.Addr, out out_width); Bitmap bitmap = ImageUtil.ByteToImage4(16, 16, fontbyte, 0, bgcolor); ImageUtil.BlackOutUnnecessaryColors(bitmap, 1); string font_filename = Path.Combine(basedir, a.Info + ".png"); U.BitmapSave(bitmap, font_filename); bitmap.Dispose(); sb.AppendLine(a.Info + ".png"); } return(sb); }
//フォントの描画 void DrawFonts() { if (SearchChar.Text.Length <= 0) { return; } Bitmap fontSampleBitmap; uint fontlist_pointer = GetFontPointer(this.FontType.SelectedIndex == 0); Color bgcolor = GetFontColor(this.FontType.SelectedIndex == 0); fontSampleBitmap = ImageUtil.Blank(FontPictureBox.Width, FontPictureBox.Height); PatchUtil.PRIORITY_CODE priorityCode = PatchUtil.SearchPriorityCode(); int drawwidth = 0; for (int i = 0; i < this.FontSample.Text.Length; i++) { uint search_char; if (this.FontSample.Text[i] == '@') { search_char = U.ConvertMojiCharToUnitFast(this.SearchChar.Text, priorityCode); } else { search_char = U.ConvertMojiCharToUnitFast(this.FontSample.Text.Substring(i, 1), priorityCode); } uint fontaddr = FindFontData(fontlist_pointer, search_char, priorityCode); if (fontaddr == U.NOT_FOUND) { continue; } int width; byte[] fontbyte; if (this.FontSample.Text[i] == '@') { width = (int)this.FontWidth.Value; fontbyte = this.SelectFontBitmapByte; } else { fontbyte = ReadFontData(fontaddr, out width); } if (width <= 0 || fontbyte == null) { continue; } Bitmap bitmap = ImageUtil.ByteToImage4(16, 16, fontbyte, 0, bgcolor); fontSampleBitmap.Palette = bitmap.Palette; ImageUtil.BitBlt(fontSampleBitmap, drawwidth, 0, width, 16, bitmap, 0, 0); drawwidth += width; } FontPictureBox.Image = U.Zoom(fontSampleBitmap, ZoomComboBox.SelectedIndex); }
public static Bitmap DrawFont(uint search_char, bool IsItemFont, out int out_width, PatchUtil.PRIORITY_CODE priorityCode) { uint fontlist_pointer = GetFontPointer(IsItemFont); Color bgcolor = GetFontColor(IsItemFont); uint fontaddr = FindFontData(fontlist_pointer, search_char, priorityCode); if (fontaddr == U.NOT_FOUND) { out_width = 0; return(null); } byte[] fontbyte = ReadFontData(fontaddr, out out_width); Bitmap bitmap = ImageUtil.ByteToImage4(16, 16, fontbyte, 0, bgcolor); return(bitmap); }