internal static extern GpStatus GdipGetPropertyItemSize(GpImage image, PROPID propId, out uint size);
internal static extern GpStatus GdipGetPropertyIdList(GpImage image, uint numOfProperty, PROPID[] list);
GdipGetPropertyItemSize(GpImage image, PROPID propId, out uint size);
public object GetValue() { object result = null; PROPID propid = this.vt; if (propid <= PROPID.VT_LPWSTR) { switch (propid) { case PROPID.VT_I2: result = this.iVal; break; case PROPID.VT_I4: result = this.lVal; break; case PROPID.VT_R4: result = this.fltVal; break; case PROPID.VT_R8: result = this.dblVal; break; case PROPID.VT_CY: case PROPID.VT_DATE: case PROPID.VT_BSTR: case PROPID.VT_DISPATCH: case PROPID.VT_VARIANT: case PROPID.VT_DECIMAL: case PROPID.VT_NULL | PROPID.VT_I2 | PROPID.VT_R4 | PROPID.VT_BSTR: break; case PROPID.VT_ERROR: result = this.scode; break; case PROPID.VT_BOOL: result = (0 != this.boolVal); break; case PROPID.VT_UNKNOWN: result = Marshal.GetObjectForIUnknown(this.ptr); break; case PROPID.VT_I1: result = this.cVal; break; case PROPID.VT_UI1: result = this.bVal; break; case PROPID.VT_UI2: result = this.uiVal; break; case PROPID.VT_UI4: result = this.ulVal; break; case PROPID.VT_I8: result = this.hVal; break; case PROPID.VT_UI8: result = this.uhVal; break; default: switch (propid) { case PROPID.VT_LPSTR: result = Marshal.PtrToStringAnsi(this.ptr); break; case PROPID.VT_LPWSTR: result = Marshal.PtrToStringUni(this.ptr); break; } break; } } else if (propid != PROPID.VT_FILETIME) { if (propid == PROPID.VT_CLSID) { result = Marshal.PtrToStructure(this.ptr, typeof(Guid)); } } else { result = PROPVARIANT.FileTimeStart.Add(new TimeSpan(this.filetime)); } return(result); }
GdipGetPropertyIdList(GpImage image, uint numOfProperty, PROPID[] list);