//保存样式
private void btSave_Click(object sender, EventArgs e)
{
//指定临时图片保存位置
FileInfo fileInfo = new FileInfo(fileName);
string path = fileInfo.DirectoryName;
string bitmapFileName = path + @"\" + this.txtSymbolName.Text + ".bmp";
//创建新的画图,并将底色清为白色
Bitmap bitmap = new Bitmap(listBoxImage.ImageSize.Width, listBoxImage.ImageSize.Height, PixelFormat.Format24bppRgb);
Graphics graphics = Graphics.FromImage(bitmap);
graphics.Clear(Color.White); Bitmap image;
int startX;
int startY;
GListBoxItem glistItem;
//将各个子样式在画图上绘制
for (int i = 0; i < this.gListBox.Items.Count; i++)
{
glistItem = (GListBoxItem)this.gListBox.Items[i];
image = (Bitmap)listBoxImage.Images[glistItem.ImageIndex];
startX = 50 - listBoxImage.ImageSize.Width / 2;
startY = 50 - listBoxImage.ImageSize.Height / 2; image.MakeTransparent(image.GetPixel(0, 0));
System.Drawing.Rectangle rectangle = new Rectangle(startX, startY, listBoxImage.ImageSize.Width, listBoxImage.ImageSize.Height);
graphics.DrawImage(image, rectangle);
graphics.Save();
}
graphics.Dispose();
//保存画图
bitmap.Save(bitmapFileName, System.Drawing.Imaging.ImageFormat.Bmp); //创建图片类型,这里可以参考第五章的例子,用其他类型转换
IPictureLineSymbol pictureLineSymbol = new PictureLineSymbolClass();
pictureLineSymbol.CreateLineSymbolFromFile(esriIPictureType.esriIPictureBitmap, bitmapFileName); pictureLineSymbol.Offset = 0;
pictureLineSymbol.Width = 10;
pictureLineSymbol.Rotate = false; IStyleGallery styleGallery;
IStyleGalleryItem styleGalleryItem;
IStyleGalleryStorage styleGalleryStorge;
//添加新样式
styleGalleryItem = new ServerStyleGalleryItemClass();
styleGalleryItem.Name = this.txtSymbolName.Text;
styleGalleryItem.Category = "default";
object objSymbol = pictureLineSymbol;
styleGalleryItem.Item = objSymbol; styleGallery = new ServerStyleGalleryClass();
styleGalleryStorge = styleGallery as IStyleGalleryStorage;
styleGalleryStorge.TargetFile = fileName;
styleGallery.AddItem(styleGalleryItem);
//保存新样式
styleGallery.SaveStyle(fileName, fileInfo.Name, "Line Symbols");
this.Close();
this.Dispose();
} 在红色代码处显示异常 对 COM 组件的调用返回了错误 HRESULT E_FAIL 自己在以前运行还可以,不知道为什么现在老显示这个异常,真是急坏了希望高手不吝赐教
private void btSave_Click(object sender, EventArgs e)
{
//指定临时图片保存位置
FileInfo fileInfo = new FileInfo(fileName);
string path = fileInfo.DirectoryName;
string bitmapFileName = path + @"\" + this.txtSymbolName.Text + ".bmp";
//创建新的画图,并将底色清为白色
Bitmap bitmap = new Bitmap(listBoxImage.ImageSize.Width, listBoxImage.ImageSize.Height, PixelFormat.Format24bppRgb);
Graphics graphics = Graphics.FromImage(bitmap);
graphics.Clear(Color.White); Bitmap image;
int startX;
int startY;
GListBoxItem glistItem;
//将各个子样式在画图上绘制
for (int i = 0; i < this.gListBox.Items.Count; i++)
{
glistItem = (GListBoxItem)this.gListBox.Items[i];
image = (Bitmap)listBoxImage.Images[glistItem.ImageIndex];
startX = 50 - listBoxImage.ImageSize.Width / 2;
startY = 50 - listBoxImage.ImageSize.Height / 2; image.MakeTransparent(image.GetPixel(0, 0));
System.Drawing.Rectangle rectangle = new Rectangle(startX, startY, listBoxImage.ImageSize.Width, listBoxImage.ImageSize.Height);
graphics.DrawImage(image, rectangle);
graphics.Save();
}
graphics.Dispose();
//保存画图
bitmap.Save(bitmapFileName, System.Drawing.Imaging.ImageFormat.Bmp); //创建图片类型,这里可以参考第五章的例子,用其他类型转换
IPictureLineSymbol pictureLineSymbol = new PictureLineSymbolClass();
pictureLineSymbol.CreateLineSymbolFromFile(esriIPictureType.esriIPictureBitmap, bitmapFileName); pictureLineSymbol.Offset = 0;
pictureLineSymbol.Width = 10;
pictureLineSymbol.Rotate = false; IStyleGallery styleGallery;
IStyleGalleryItem styleGalleryItem;
IStyleGalleryStorage styleGalleryStorge;
//添加新样式
styleGalleryItem = new ServerStyleGalleryItemClass();
styleGalleryItem.Name = this.txtSymbolName.Text;
styleGalleryItem.Category = "default";
object objSymbol = pictureLineSymbol;
styleGalleryItem.Item = objSymbol; styleGallery = new ServerStyleGalleryClass();
styleGalleryStorge = styleGallery as IStyleGalleryStorage;
styleGalleryStorge.TargetFile = fileName;
styleGallery.AddItem(styleGalleryItem);
//保存新样式
styleGallery.SaveStyle(fileName, fileInfo.Name, "Line Symbols");
this.Close();
this.Dispose();
} 在红色代码处显示异常 对 COM 组件的调用返回了错误 HRESULT E_FAIL 自己在以前运行还可以,不知道为什么现在老显示这个异常,真是急坏了希望高手不吝赐教
就是这句显示的错误